OpenCalphad を使ってみる

2016年2月23日

はじめに

OpenCalphad を使ってみる。

OpenCalphad って?

CALPHAD (CALculation of PHAse Diagrams) とは、物質の状態図 (phase diagram) を計算で求めること、あるいはその方法のことで、OpenCalphad はそれを行うためのオープンソースのソフトウェアである。

環境

  • OpenCalphad Version 3.0
  • Windows 7 64 bit
  • MinGW w64
  • MSYS2 64 bit (MinGW w64)
  • gnuplot 5.1

セットアップ

  • OpenCalphad のパッケージは こちら からダウンロードできる。
  • 実行のためにはまずコンパイルする必要がある。コンパイルには gfortran (など?) が必要である。
  • コンパイル環境を用意するには、MinGW の導入が手っ取り早い。MinGW 単体を導入する方法と、MSYS2 から MinGW を導入する方法がある。詳しくは こちら を参照。
  • gnuplot が必要である。こちら から入手できる。

コンパイルの方法は、コマンドプロンプトで行う方法と MSYS2 で行う方法とある。

コマンドプロンプト

コマンドプロンプトで gfortran を実行できることを確認しておく。

  1. OpenCalphad のパッケージを適当なところに展開する。
  2. フォルダの中にある "linkmake.txt" の名前を "linkmake.cmd" に変える。
  3. コマンドプロンプトで OpenCalphad のフォルダに移動する (フォルダで Shift+右クリックして "コマンドウィンドウをここで開く" を選択すると速い)。
  4. "linkmake" を実行。
    >linkmake
    
  5. うまく行けば "oc3B.exe" といったファイルができる (バージョンによって名前が違うかもしれない)。

OpenMP 版のコンパイルは上の "linkmake.txt" の代りに "linkpara.txt" を用いればよい。

MSYS2

gfortran を実行できることを確認しておく。

  1. OpenCalphad のパッケージを適当なところ (MSYS2 のホーム以下など) に展開する。
  2. MSYS2 のシェルで OpenCalphad のディレクトリに移動する。
  3. make を実行。
    $ make
    
  4. 続けて OpenMP 版をコンパイルするには、次のようにする。
    $ cp Makefile-parallel Makefile
    $ make clean
    $ make
    

非 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 ディレクトリの中にある。

  • agcu.TDB : Ag-Cu 2 元系データベース
  • steel1.TDB : 鉄基多元系データベース
  • その他いくつか

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" ファイルが参考になる。

参考文献

  • 阿部太一, TDB ファイル作成で学ぶ カルファド法による状態図計算, 内田老鶴圃, 2015.