OpenCalphad を使ってみる2016年2月23日 | |
はじめにOpenCalphad を使ってみる。 OpenCalphad って?CALPHAD (CALculation of PHAse Diagrams) とは、物質の状態図 (phase diagram) を計算で求めること、あるいはその方法のことで、OpenCalphad はそれを行うためのオープンソースのソフトウェアである。 環境
セットアップ
コンパイルの方法は、コマンドプロンプトで行う方法と MSYS2 で行う方法とある。 コマンドプロンプトコマンドプロンプトで gfortran を実行できることを確認しておく。
OpenMP 版のコンパイルは上の "linkmake.txt" の代りに "linkpara.txt" を用いればよい。 MSYS2gfortran を実行できることを確認しておく。
非 OpenMP 版に戻すには、"Makefile-sequential" を Makefile としてコピーすればよい。 OpenCalphad を使ってみる起動とコマンド入力ここでは MSYS2 での利用を想定する。コンパイルされた実行ファイル (ここでは "oc3B.exe") を実行すると、OpenCalpha が起動する。 $ ./oc3B Open Calphad (OC) software version 3.0 linked 2016-02-23 with command line monitor version 21 This program is available with a GNU General Public License. It includes the General Thermodynamic Package, version GTP-3.00 and Hillert's equilibrium calculation algorithm version HMS-2.00 and step/map/plot software version SMP-1.10 and LMDIF (1980) from Argonne is used by the assessment procedure OC3: "OC3:" はプロンプトで、ここでコマンドを入力する。"?" を入力すると入力可能なコマンドが表示される。 OC3:? ABOUT ENTER LIST QUIT AMEND EXIT MACRO READ BACK FIN MAP SAVE CALCULATE HELP NEW SELECT DEBUG HPCALC OPTIMIZE SET DELETE INFORMATION PLOT STEP まず、終了は "EXIT" か "QUIT" あるいは "FIN" である。 OC3:exit Are you sure? /N/: y STOP Ha en bra dag 小文字で入力してよい。また、短縮してもよい。 OC3:q Are you sure? /N/: y STOP Have a nice day ただし、他のコマンドと区別できる限りで短縮できる。"e" だと "ENTER" と "EXIT" のどちらか確定できないので不可。 OC3:e Ambiguous command, available commands are: ABOUT ENTER LIST QUIT AMEND EXIT MACRO READ BACK FIN MAP SAVE CALCULATE HELP NEW SELECT DEBUG HPCALC OPTIMIZE SET DELETE INFORMATION PLOT STEP help コマンドでヘルプが表示される。
OC3:help fin
>>> We should open a help window to display text: 1324 1329
%\section{Fin }
Terminate the OC software in French, Au revoir.
%===================================================================
"exit" の時の "Ha en bra dag" ってなにかと思ったら、スウェーデン語らしい。意味は "Have a nice day" と同じ。
OC3:help exit
>>> We should open a help window to display text: 1318 1323
%\section{Exit }
Terminate the OC software in Swedish, Ha en bra dag.
%===================================================================
フランス語も同じ意味にしようとすれば、"Au revoir" より "Bonne journée" らしいね。超どうでもいいけど。 TDB ファイルの読み込み計算には TDB ファイル (もともとは Thermo-Calc 用の熱力学データベースフォーマット) が必要である。OpenCalphad ディレクトリの macros ディレクトリの中にある。
TDB ファイルを読み込むには、OpenCalphad を起動するディレクトリにファイルをもってきておく。OpenCalphad のディレクトリはごちゃごちゃしているので、まっさらな作業ディレクトリで仕事をしたいところではあるが、OpenCalphad のディレクトリ ("ochelp.hlp" があるディレクトリ) 以外で起動するとヘルプが使えなくなってしまうようである。とりあえずここではヘルプはあきらめる。
$ mkdir work
$ cp ../macros/ocv3/steel1.TDB .
$ ../oc3B
...
OC3:r t steel1
Database has 6 elements: C CR FE MO SI V
Give the elements to select, finish with empty line
Select elements /all/:fe c
Select elements /no more/:
Selected 2 elements: FE C
There are 9 bibliographic references
REF283 'Alan Dinsdale, SGTE Data for Pure Elements, Calphad Vol
15(1991) p 317-425, also in NPL Report DMA(A)195 Rev. August
1990'
REF190 'P. Gustafson, Scan. J. Metall. vol 14, (1985) p 259-267
TRITA 0237 (1984); C-FE'
REF281 'Alan Dinsdale, SGTE Data for Pure Elements, NPL Report
DMA(A)195 September 1989'
REF267 'W. Huang, Metall. Trans. Vol 21A(1990) p 2115-2123, TRITA
-MAC 411 (Rev 1989); C-FE-MN'
REF319 'H. Du and M. Hillert, revision; C-Fe-N'
REF113 'J-O Andersson, Calphad Vol 12 (1988), p 9-23 TRITA 0321
(1986); C-FE-MO'
REF102 'J-O Andersson, Met. Trans A, Vol 19A, (1988) p 627-636 TRITA
0207 (1986); C-CR-FE'
REF322 'Byeong-Joo Lee, unpublished revision (1991); C-Cr-Fe-Ni'
REF275 'W. Huang, TRITA-MAC 441 (1990), Fe-Mn-V-C *'
"r t steel1" は "read tdb steel1" の短縮形で、TDB ファイルを読み込むコマンドである。成分の入力を促されるので、ここでは "fe c" (Fe と C) を入力している。それ以上入力が必要ない場合は、そのまま Enter を入力する。 1点平衡計算1点平衡計算 (温度、圧力、組成を指定する計算) は以下のように行う。 OC3:set c t=1000 p=1e5 n=1 x(c)=0.2 OC3:c e Gridmin: 65 points 0.00E+00 s and 0 clockcycles, T= 1000.00 Equilibrium calculation 15 its, 0.0000E+00 s and 32 clockcycles OC3:l ,, Output for equilibrium: 1, DEFAULT_EQUILIBRIUM 2016.02.24 Conditions .................................................: 1:T=1000, 2:P=100000, 3:N=1, 4:X(C)=0.2 Degrees of freedom are 0 Some global data, reference state SER ......................: T= 1000.00 K ( 726.85 C), P= 1.0000E+05 Pa, V= 6.9246E-06 m3 N= 1.0000E+00 moles, B= 4.7080E+01 g, RT= 8.3145E+03 J/mol G= -3.6354E+04 J, G/N= -3.6354E+04 J/mol, H= 2.2171E+04 J, S= 5.8525E+01 J/K Some data for components ...................................: Component name Moles Mole-fr Chem.pot/RT Activities Ref.state C 2.0000E-01 0.20000 -1.5224E+00 2.1818E-01 SER (default) FE 8.0000E-01 0.80000 -5.0848E+00 6.1900E-03 SER (default) Some data for phases .......................................: Name Status Moles Volume Form.Units At/FU dGm/RT Comp: BCC_A2.................. E 8.006E-01 5.85E-06 8.00E-01 1.00 0.00E+00 X: FE 9.99278E-01 C 7.21980E-04 GRAPHITE................ E 1.994E-01 1.08E-06 1.99E-01 1.00 0.00E+00 X: C 1.00000E+00 FE 0.00000E+00 "set c" は "set condition" の短縮形で、そのあと温度、圧力、モル数、C の組成を指定している。 "c e" は "calculate equilibrium" の短縮形で、平衡計算を実行する。 "l" は "list" の短縮形で、続くカンマ 2 つは入力の省略である。結果を表示している。 状態図の計算OC3:set ax 1 x(c) 0 1 , OC3:set ax 2 t 500 2000 25 OC3:map ... "set ax" は "set axis" の略で、状態図計算のための独立変数を設定する。"map" で状態図計算を行う。 状態図の表示は次のように行う。 OC3:plot Horizontal axis variable /X(*,C)/: Vertical axis variable /T/: Note: give only one option per line! Options? /RENDER/: xr Default limits /N/: Low limit /0/: High limit /0.5/: 0.2 Note: give only one option per line! Options? /RENDER/: User set limits for x: 0.000000E+00 2.000000E-01 plot data used: 4 155 out of 1000 10000 Gnuplot data file : ocgnu.dat Gnuplot command file: ocgnu.plt "plot" で状態図のプロットを行う。途中の "Options?" で "xr" と入力しているのは "xrange" の短縮形で、X 方向 (C の組成方向) の表示範囲を設定している。"Options?" で "render" (デフォルトなので、Enter を入れればよい) を入力すると、gnuplot によって下図のようなグラフが表示される。 ![]() メッセージに出ているように、"ocgnu.dat" という名前でプロット用のデータが出力されているので、計算された状態図を値として参照することができる。 マクロ上記で入力したようなコマンドを、マクロという形でまとめて書いておくことができる。ファイルの拡張子は ".OCM" である。たとえば次のようなものである。 fe-c-map.OCM @$ Calculate Fe-C phase diagram set echo r t steel1 fe c set cond t=1000 p=1e5 n=1 x(c)=0.2 c e l ,, @& set ax 1 x(c) 0 1 , set ax 2 t 500 2000 25 map @& plot x(*,c) t xr n 0 0.2 render @$set inter "@$" の行はコメントである。"@&" では Enter が入力されるまで実行が一時停止される。その他はコマンドが羅列されているだけである。最初の "set echo" は入力されたコマンドを表示するためのものである (コメントも表示される)。最後の "set inter" は "set interactive" の短縮形で、OpenCalphad のコマンド入力状態で終了するためのものである。これがない場合は入力不足のエラーで終了する。そのまま終了してよい場合は "quit y" で終わらせるのがきれいかも。 マクロを実行するには "macro" コマンドを用いる。 OC3:macro fe-c-map マクロの書き方やその他の例については、OpenCalphad ディレクトリの macros ディレクトリの中にある ".OCM" ファイルが参考になる。 参考文献
| |
| PENGUINITIS | |