Edited at

REFPROPをpythonから呼び出す

【追記:2019/02/06】

このページの記事ではビルドから始まっていて少し複雑に見えたので、簡単に使うだけの記事も作成しました。

REFPROPをpythonから呼び出す(簡易版)


REFPROPは商用ソフトで、アメリカ国立標準技術研究所(National Institute of Standards and Technology, NIST)によって開発されたプログラムです。名称はREFerence fluid PROPertiesの頭字語から来ているそうです。

工業的に重要な流体とそれらの混合物の熱物性値および輸送物性値を計算してくれます。ホームページからオーダーすると325ドル(2019年1月現在)で購入でき、ダウンロード出来ます。

GUIがあるので、それを使うと様々な種類の物質や混合物の熱物性値や輸送物性値を表やグラフで得られます。熱物性値、輸送物性値は一通りなんでも出るのでとても有用です。

この記事ではpythonからREFPROPの関数を呼び出してみます。

NISTの公式が出しているドキュメントとgithubのページが充実しているので、それをみると終わりですが、少しつまづくところもあったので記事にしておきます。

REFPROPのダウンロード版では外部ソフトからREFPROPの中身を呼び出すのにWindows用のDLLしか同梱されていません。MacOS(自分の環境)から使おうとすると同梱されているfortranのソースを自分でコンパイルしてダイナミックライブラリファイル(.dylib)を作成する必要があります。


NISTからの有用な資料


ダイナミックライブラリのコンパイル


必要なもの


  • Python + numpy

  • fortran コンパイラ

  • Cmake

  • git


やり方


  1. REFPROP-cmakeを再帰的オプションを付けてクローン、git clone --recursive https://github.com/usnistgov/REFPROP-cmake.git

  2. REFPROPのFORTRANフォルダをgitでクローンしたフォルダ内にコピー

  3. ターミナルでgitでクローンしたフォルダに移動

  4. mkdir build

  5. cd build

  6. cmake .. -DCMAKE_BUILD_TYPE=Release


  7. cmake --build . (ドットまであるのに注意)

スクリーンショット 2019-02-01 12.10.05.png

ビルド完了。

REFPROP-cmake/build/の中にlibrefprop.dylibが出来ています。

それが共有ライブラリ(ダイナミックライブラリ)です。


環境変数に登録

一度共有ライブラリがビルドできると、OSから見つけられる場所に置く必要があります。

OSから見つけられる場所に置くのには、2通りのやり方があります。


  1. PATHを通す。

  2. 使うpythonスクリプトファイルと同じフォルダにダイナミックライブラリ(.DLL/.dylib/.so)などを置く

Windowsで、REFPROPをインストーラからインストールしているとすでにPATH通されているので難しいこと考える必要はありません。


自分でビルドしている場合の環境変数(1の方法)(MacOS)

自分でビルドしている場合、1の方法でREFPROPを使おうとするとPATH通す必要があります。(上でも書いている通り、Windowsでインストーラ使っている方は不要です。)

Macだと標準的なダイナミックライブラリの置き場所は以下とのことです。


The standard locations for dynamic libraries are ~/lib, /usr/local/lib, and /usr/lib.


PATHを通すのに、出来たlibrefprop.dylicとREFPROPに同梱されているFLUIDSフォルダとMIXTURESフォルダを上記のフォルダのいずれかにコピーします。

私は/usr/local/libの中にいれました。

そのあと、~/.bach_profileに書いておく必要があります。ターミナルで以下を入れます。

echo 'export RPPREFIX=/usr/local/lib' >> ~/.bash_profile

/usr/local/libのところは自分の置いたフォルダに置き換えてください。


pythonライブラリインストール

REFPROPのpythonラッパーがNISTの方が作っていますので、それをインストールします。ターミナルから以下を実行。

pip install ctREFPROP


チュートリアル

公式のctREFPROPのチュートリアルを参考に、自分用チュートリアルを作りました。

https://nbviewer.jupyter.org/gist/ina111/a4d9507eef905c5aeb11fffd42d32a48

以下はその出力ファイルです。こんなのが出来ますよということで。


蒸気圧曲線

METHANE_vapor_pressure1.png

METHANE_vapor_pressure2.png


温度ー密度

METHANE_T-density1.png


定圧比熱Cp、粘性、熱伝導率

METHANE_T-Cp1.png

METHANE_T-vis.png

METHANE_T-α.png