以前の会社員時代には、状態図を計算する必要がありThermoCalcを使用していた。ThermoCalcとは、CALPHAD(CalculatePhaseDiagram)という欧州で開発された技術を基にしたソフトウェアで、会社がそこと契約していたので使用することが出来た。現在大学で機械学習を生業としているが、特徴量として状態図上の値を用いたいと思った。しかし大学ではThermoCalcの契約がないため、状態図計算ができるようなfreeのライブラリを探すと、Pycalphadというものがあることを知り、それを使ってみることにした。
まずCALPHADで状態図を計算するには、熱力学的なデータベースが必要である。ThermoCalcの場合にはそのデータベースを有料、しかも結構な値段で提供していた。同じものが無料で手に入る訳はないものの、Pycalphadにある程度のデータが入っていることを期待した。普通に調べてもなかなか出てこなかったが、色々と模索していると、GitHub上にある程度のものがあることに気がついた。下がそのフォルダとなる。
pycalphadと同じようなものにopencalphadという、やはり状態図計算が可能なライブラリもあり、こちらのウェブサイトでもtdbファイルを紹介していた。そのサイトが下。
更に、日本の金属材料研究機関であるNIMSもtdbデータベースをもっている。CPDDBという名前だが、ここは登録が必要で、なおかつ大量のデータダウンロードは自動、手動を問わず禁止と銘記されているのでちょっと使いづらい。
欧州のSGTEという機関も、tdbファイルを提供している。ウェブサイト情報によると毎年更新していると記載されているが、そのサイト自体は見つけることができなかった。
さて、データベースを見つけてようやくpycalphadを動かすことが可能となる。暫く使用してみたが、正直ドキュメントがやや貧弱である印象を受けた。このため色々と機能はもっていそうだが、それを使いこなすためには元のコードまで遡る必要があり、手間暇が掛かる。
A-B二元系におけるある相の自由エネルギーGMを計算するメソッドとしてcalculateが提供されている。このcalculateはGM以外にHM、SM、CPMを出力することができ、更にGM_MIX、HM_MIX、SM_MIX等も出力することが出来る。GMの意味は記載されているが、HM、SM、CPMについてはその意味が銘記されていない。エンタルピー出力のところでHM_MIXを出力させているのでHMはエンタルピーで、SMはエントロピー、CPMは低圧比熱であろうと推定はできるが、ドキュメントにはっきりと記載されていないのはちょっと気にはなる。またHM_MIXは混合のエンタルピーとされているが、pycalphadでは混合の過剰エネルギーと理想エネルギーの2種と取り扱っており、過剰エンタルピーなのか、理想エンタルピーなのかがこれも銘記されていない。理想エンタルピーであれば0になるはずで、0でない値が出力されていることから過剰エンタルピーであろうと推定できるが、色々と面倒くさい。
それでも一応過剰エネルギーを出力させることはできて、例えばCr-Ni系で下のような過剰エネルギー分布が得られた。横軸はNiの組成、縦軸は混合の過剰エネルギーを示す。これもうまくデータベースを選ばないとうまく値が出てこないので、色々とノウハウが必要そうだ。

まだ利用途中なので、今後も苦労しそうだが、それでも無料で状態図計算ができるのは有難いといえば有難い。もう少しtdbが充実してくるともっと有難くなる。
#pycalphad #ThermoCalc

コメント