Python support module for CaTCalc
CaTPython
under construction
CaTPythonはCaTCalcの様々な熱力学計算機能をPythonから利用するモジュールです。本モジュールを用いることで、ユーザープログラムにおいて熱力学平衡計算や化学反応計算を利用することが出来ます。
本モジュールの利用にはCaTCalc本体(ver.2024以降)とPythonの開発環境が必要です。後者については情報がweb等から容易に入手できますので説明は省略しますが、本モジュールの開発はAnaconda環境下のPythonとVSCode/PyCharm/Spiderで行っていますので、同様な環境を推奨します。なお、Pythonは3.11.9を用いています。
CaTCalcと同時にインストールされた場合、CaTPython.pydはCaTCalcのユーザフォルダの下のMacroフォルダの中に配置されます。(例えば、C:\Users\ユーザ名\Documents\CaTCalcXE\Macro\CaTPython.pyd)
Anaconda環境下であれば、Anacondaがインストールされているフォルダの下のLib\site-packagesフォルダにCaTPython.pydをコピーして配置してください。あるいはユーザーの自作プログラムのあるフォルダに配置しても構いません。
データベースはCaTCalcのデフォルトのデータフォルダにあるものが利用できます。また、ファイルのパスも明記すれば任意のデータファイルも使えます。なお、計算結果はデフォルトでCaTCalcのResultフォルダに保存するように設定しています。計算結果はCaTCalcでも表示、確認することが可能です。
基本的事項は以下の通りです。具体的にはExample1、Example2、Example3を参照してください。
CaTPythonモジュールには、(今のところ)ThermodynamicSystemのみを定義しています。まず、これをimportして下さい。
Pythonとのデータのやりとりは整数、実数、文字列と、それらのlistを用いています。Dictionary形式には(今のところ)未対応です。
系の構成元素はGetElementsでlistとして得ることが出来ます。
系を構成する相はGetPhaseNamesでlistとして受け渡します。’ActivePhases'を引数で与えると活性な相(出現する相)の相名のみを得ることが出来ます。
平衡計算には、複数の相を対象とした一般的な平衡計算向けのCalculateと、個別の相を対象としたCalculateEachがあります。前者は相分離にも自動対応した大域的最小化プログラムですが、逆に相の不安定域の計算が出来ません。その場合は後者を用いて下さい。
計算結果の受け渡しにはGetPropertiesとGetValuesを用います。前者は相の構成成分など、結果の項目名を得るために用い、それらに対応した値はGetValuesを用います。これらは複数の計算条件に対応した複数の結果をlistとして受け渡すものです。例えば相の元素組成の割合を得たい場合、これらはそもそも一般に複数の実数値ではありますが、これを直接にlistとして得ることは(今のところ)出来ません。そのような場合はGetValuesを元素を指定して複数回用いるprogramを組む必要があります。
以下各関数の名称、機能、引数と結果のデータ型を示します。
機能:CaTCalcやLicenseなどを含めたCaTPythonの検証を行います。
引数:不要
結果:成功すればCaTPythonのバージョンと登録ユーザ名を表示します。失敗すればエラー表示を行います。Pythonプログラムは停止しませんのでご注意ください。
機能:データファイルから熱力学パラメータを読み込みます。
引数:データファイル名と元素のリスト
結果:成功すれば元素名と共にメッセージを表示
機能:熱力学パラメータを読み込んだ元素のリストを得ます。
引数:不要
結果:元素のリスト
機能:熱力学パラメータを読み込んだ全ての相のリストを得ます。’ActivePhases'を引数で与えると活性相(出現する相)の相名のみを得ることが出来ます。
引数:blank、もしくは、’ActivePhases'
結果:相のリスト
機能:計算条件をクリアします。
引数:引数が無い場合は元素も熱力学パラメータもクリアします。'Feed'とすればFeed関連の条件のみをクリアします。
結果:メッセージ
機能:計算条件をCaTCalcの条件設定と同じ形式で文字列で与えます。
引数:例:’T=(300,3000,50), X(Fe)=b, X(C)=1/4’
結果:メッセージ
機能:個々の計算条件を個別にCaTCalcの条件設定と同じ形式で文字列で与えます。
引数:例:’T',800
結果:設定した条件
機能:設定済みの計算条件を文字列で取得します。
引数:不要
結果:計算条件
機能:個々、もしくは複数の量の単位を設定します。
引数:例:’T=K,P=Pa'
結果:設定結果のメッセージ
機能:設定済みの条件下で、指定した単一相に対する平衡計算を行います。相分離は考慮しません。
引数:対象の相名
結果:メッセージ
機能:設定済みの条件下で、指定した相のセットに対する平衡計算を行います。相分離にも対応します。
引数:’*’ではデータベースから読み込まれた全ての相を考慮します。相を指定する場合はリストを引数で与えます。
結果:計算の実行結果のメッセージ。
機能:指定した量の結果をリストとして得ます。
引数:対象とする量。例えばBCC_A2相の比熱は'Cp(BCC_A2)'。
結果:値のリスト
機能:指定したリストを文字列リストとして得ます。
引数:活性相のリストは'ActivePhases'、FCC_A1相の構成成分は'FCC_A1:Species'、副格子0の成分リスト:’FCC_A1:Sublattice#0’
結果:それぞれの文字列リスト
機能:計算結果を保存するpathを設定。
引数:パス。
結果:無し。
CaTCalcのFunctionで参照可能な量と同一です。
引数:不要
例:GetValues('G')
引数:元素名
例:GetValues('mu(Fe)'), GetValues('AC('+element_A+')')
引数:相名
例:GetValues('G(BCC_A2)')
引数:相名と成分名
例:GetValues('XF(Gas,FeO)')
引数:相名と元素名
例:GetValues('X(BCC_A2,Fe)')
引数:相と副格子サイト番号
例:GetValues('Y(BCC_A2,Fe#0)') :BCC_A2相の第1副格子のFe成分のSiteFraction(副格子の番号は0から)