LoginSignup
4

More than 5 years have passed since last update.

posted at

updated at

JModelicaをUbuntuにインストールする

1 / 13

JModelicaって

ユーザガイドによると

  • モデリング言語Modelicaの元、異なる分野の複雑な物理シミュレーションを実施
  • Optimicaの拡張をサポートし最適化問題を扱うことができる
  • コンパイラ構築フレームJastAddベースのコンパイラを使用
  • ユーザーインターフェイスはPython
  • FMI(Function Mock-up Interface)のExchange Moldel, Co-simulationをサポート

わかりやすくいうと

  • Modelica言語のモデルをFMUs(Function Mock-up Units)としてコンパイルできる
  • FMUsをインポートして計算実行できる

JModelicaの基本情報

ソフト名 JModelica
バージョン 1.17
開発元 ルンド大学
(現在はModelon ABが開発・保守)
ライセンス GPL v3 ※1
URL http://www.jmodelica.org/
platform Linux(32/64bit) Windows(32/64bit)

※1…ランタイムライブラリはCPL v1.0 (JModelicaでコンパイルされたFMUsはCPL v1.0準拠)


インストール

基本のユーザーガイド通り実施すればよい(丸投げ)

Windows

Ubuntu 12.04

Ubuntu 15.04

Ubuntuはいいけど今は2016年だし、Anacondaがいいし、という人向けに  
以下では、Ubuntu 16.04へのAnaconda,JModelicaのインストールについて解説


Anaconda環境を整える

Anacondaで仮想環境を用意する。
まずはpyenvをインストールする

bash
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc

次にAnacondaのインストール、caeという名前の仮想環境を作成する。

bash
wget -P $(pyenv root)/cache https://repo.continuum.io/archive/Anaconda2-4.1.0-Linux-x86_64.sh
pyenv install anaconda2-4.1.0
pyenv global anaconda2-4.1.0
pyenv rehash
conda update -y conda

通常、上記1行目は不要のはず。pyenv install 内でcurlがTLSの暗号化サイズにエラーを出して悩ましいとき、
先にwgetでダウンロードした後インストールする。


Ubuntu16.04(64bit)にJModelicaをインストールする下準備

必要なパッケージのインストール

JModelicaが必要とするパッケージをUbuntu 16.04にインストール。
ターミナルにて下記を入力

bash
sudo apt install -y g++ subversion gfortran cmake swig ant openjdk-8-jdk  zlib1g-dev libboost-dev automake autoconf pkg-config

必要なPythonパッケージのインストール

JModelicaが必要とするPythonパッケージを先に作成したPython環境にインストール。
jpypeとjccはAnaconda Cloudからインストール。

bash
conda install -y anaconda
conda install -y -c omnia jpype1=0.6.0
conda install -y -c ssc jcc=2.21

Ipoptのインストール

Ubuntuのパッケージとして提供されているらしいが、
Ubuntu12.04の頃はパッケージに不備があり?うまく動作しなかったらしい。
今回もソースからコンパイルする。configure時のprefixは各自の環境で変更。

bash
mkdir ~/Ipopt
cd ~/Ipopt
wget http://www.coin-or.org/download/source/Ipopt/Ipopt-3.12.6.tgz
tar xzf Ipopt-3.12.6.tgz
cd Ipopt-3.12.6/ThirdParty/Blas
./get.Blas
cd ../Lapack
./get.Lapack
cd ../Mumps
./get.Mumps
cd ../Metis
./get.Metis
cd ../../
mkdir build
cd build
../configure --prefix=/home/ubuntu/Ipopt
make
make install

Ubuntu16.04(64bit)にJModelicaをインストール

configure時のprefixやwith-ipoptのパスは各自の環境で変更
configureファイルによるとPYTHON_HOMEの環境変数があると
PYTHON_INCLUDEやPYTHON_LIBがAnaconda環境に合わないパスが設定されてしますので注意。

bash
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server
export PYTHON_INCLUDE=/home/ubuntu/.pyenv/versions/anaconda2-4.1.0/include/python2.7
export PYTHON_LIB=/home/ubuntu/.pyenv/versions/anaconda2-4.1.0/lib/libpython2.7.so

mkdir -p ~/JModelica
cd ~/JModelica
svn co https://svn.jmodelica.org/trunk JModelica.org
cd JModelica.org
mkdir build
cd build
../configure --prefix=/home/ubuntu/JModelica --with-ipopt=/home/ubuntu/Ipopt
make
make install
make casadi_interface

動作テスト

JModelicaの使用に必要なパスの通ったipythonを起動させる

bash
/home/ubuntu/JModelica/bin/jm_ipython.sh

プロット表示のためXの環境が必要。以降、ipythonのターミナルで動作テスト。


テスト1

ipython
from pyjmi.examples import VDP_sim
VDP_sim.run_demo()

結果

VDP_sim_result.png

何を計算したのだろうか?


テスト2

ipython
from pyjmi.examples import cstr
cstr.run_demo()

結果

CSTR_result1.png CSTR_result2.png CSTR_result3.png

何かを最適化しているっぽい。


テスト3

ipython
from pyjmi.examples import cstr_casadi
cstr_casadi.run_demo()

結果

RuntimeError: The assertion "handle!=0" on line 171 of file "/home/ubuntu/JModelica/JModelica.org/ThirdParty/CasADi/CasADi/casadi/core/function/plugin_interface.hpp" failed. 
PluginInterface::loadPlugin: Cannot load shared library:
  Tried libcasadi_nlpsolver_ipopt.so:
    Error code: libcasadi_nlpsolver_ipopt.so: cannot open shared object file: No such file or directory
  Tried /home/ubuntu/JModelica/ThirdParty/CasADi/lib/libcasadi_nlpsolver_ipopt.so:
    Error code: /home/ubuntu/JModelica/ThirdParty/CasADi/lib/libcasadi_nlpsolver_ipopt.so: cannot open shared object file: No such file or directory

確かにlibcasadi_nlpsolver_ipopt.soはいない。まいっか。


おまけ
jupyter notebookでJModelicaを使えるようにする

JModelicaのインストールパスが/home/ubuntu/JModelicaである場合の例を示す。
インストールパスの部分は、各自の環境に合わせて変更すること

bash
sed 's/ipython/jupyter notebook --no-browser/g' /home/ubuntu/JModelica/bin/jm_ipython.sh >/home/ubuntu/JModelica/bin/jm_jupyter_notebook.sh
chmod +x /home/ubuntu/JModelica/bin/jm_jupyter_notebook.sh

jupyter notebookを起動する。

bash
/home/ubuntu/JModelica/bin/jm_jupyter_notebook.sh

ブラウザを立ち上げ、http://localhost:8888/ にアクセスする。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4