LoginSignup
7
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-09-22
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/ にアクセスする。

7
4
0

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
  3. You can use dark theme
What you can do with signing up
7
4