OpenCalphad を使ってみる

2018年10月31日

はじめに

OpenCalphad を使ってみる。

OpenCalphad って?

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

環境

  • OpenCalphad Version 5.0
  • Ubuntu 16.04 LTS

セットアップ

OpenCalphad のパッケージは こちら からダウンロードできる。実行のためにはまずコンパイルする必要がある。コンパイルには gfortran が必要である。

$ unzip opencalphad-version5.zip
$ cd opencalphad-master/
$ make -f Makefile-simple

うまく行けば "oc5A" というファイルができる。

OpenCalphad を使ってみる

起動とコマンド入力

ここでは MSYS2 での利用を想定する。コンパイルされた実行ファイル (ここでは "oc3B.exe") を実行すると、OpenCalpha が起動する。

$ ./oc5A

Open Calphad (OC) software version   5.004 , linked 2018-10-31
with command line monitor version 34

This program is available with a GNU General Public License.
It includes the General Thermodynamic Package, version GTP-3.21,
Hillert's equilibrium calculation algorithm version HMS-2.11,
step/map/plot software version SMP-2.21 for GNUPLOT graphics,
numerical routines extracted from from LAPACK and BLAS and
the assessment procedure uses LMDIF from ANL (Argonne, USA)

--->OC5:

"--->OC5:" はプロンプトで、ここでコマンドを入力する。"?" を入力すると入力可能なコマンドが表示される。

--->OC5:?
 ABOUT            EXIT             MAP              SELECT
 AMEND            FIN              NEW              SET
 BACK             HELP             OPTIMIZE         SHOW
 CALCULATE        HPCALC           PLOT             STEP
 DEBUG            INFORMATION      QUIT
 DELETE           LIST             READ
 ENTER            MACRO            SAVE

まず、終了は "EXIT" か "QUIT" あるいは "FIN" である。

--->OC5:exit
Are you sure? /N/: y
STOP Ha en bra dag

小文字で入力してよい。また、短縮してもよい。

--->OC5:q
Are you sure? /N/: y
STOP Have a nice day

ただし、他のコマンドと区別できる限りで短縮できる。"e" だと "ENTER" と "EXIT" のどちらか確定できないので不可。

--->OC5:e
 Ambiguous command, available commands are:
 ABOUT            EXIT             MAP              SELECT
 AMEND            FIN              NEW              SET
 BACK             HELP             OPTIMIZE         SHOW
 CALCULATE        HPCALC           PLOT             STEP
 DEBUG            INFORMATION      QUIT
 DELETE           LIST             READ
 ENTER            MACRO            SAVE

help コマンドでヘルプが表示される。

--->OC5:help fin

 >>> We should open a help window to display text:  1785 1790
%\section{Fin }

Terminate the OC software in French, Au revoir.

%===================================================================

TDB ファイルの読み込み

計算には TDB ファイル (もともとは Thermo-Calc 用の熱力学データベースフォーマット) が必要である。OpenCalphad ディレクトリの macros ディレクトリの中にある。

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

TDB ファイルを読み込むには、OpenCalphad を起動するディレクトリにファイルをもってきておく。OpenCalphad のディレクトリはごちゃごちゃしているので、まっさらな作業ディレクトリで仕事をしたいところではあるが、OpenCalphad のディレクトリ ("ochelp.hlp" があるディレクトリ) 以外で起動するとヘルプが使えなくなってしまうようである。とりあえずここではヘルプはあきらめる。

$ mkdir work
$ cp ../macros/steel1.TDB .
$ ../oc5A
...

--->OC5: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
 3E reading a TDB file

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点平衡計算 (温度、圧力、組成を指定する計算) は以下のように行う。

--->OC5:set c t=1000 p=1e5 n=1 x(c)=0.2
--->OC5:c e
 3Y Constitution of metastable phases set
Gridmin:     233 points   0.00E+00 s and       0 clockcycles, T= 1000.00
Equilibrium calculation   14 its,   0.0000E+00 s and       2 clockcycles
--->OC5:l ,,

Output for equilibrium:   1, DEFAULT_EQUILIBRIUM          2018.10.31
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
GS= -3.63539E+04 J, GS/N= -3.6354E+04 J/mol, HS=  2.2171E+04 J, S=  585.247 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 Cmp/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.21982E-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 の組成を指定している。x(c) はモル分率である。質量分率にするには w(c) とすればよい。w%(c) だと wt% になる。

"c e" は "calculate equilibrium" の短縮形で、平衡計算を実行する。

"l" は "list" の短縮形で、続くカンマ 2 つは入力の省略である。結果を表示している。

状態図の計算

--->OC5:set ax 1 x(c) 0 1 ,
--->OC5:set ax 2 t 500 2000 25
--->OC5:map
...

"set ax" は "set axis" の略で、状態図計算のための独立変数を設定する。"map" で状態図計算を行う。

状態図の表示は次のように行う。

--->OC5:plot
Horizontal axis variable /X(*,C)/:
Vertical axis variable /T/:

Note: give only one option per line!
Options? /RENDER/: xr
 Possible answers are:
 APPEND           GRAPHICS_FORMAT  POSITION_OF_KEYS SCALE_RANGES
 AXIS_LABELS      LOGSCALE         QUIT             TEXT
 FONT_AND_COLOR   MANIPULATE_LINES RATIOS_XY        TIE_LINES
 GIBBS_TRIANGLE   OUTPUT_FILE      RENDER           TITLE
Options? /RENDER/: sr
 Answer not understood, returning to upper level
 No such plot option
--->OC5:plot
Horizontal axis variable /X(*,C)/:
Vertical axis variable /T/:

Note: give only one option per line!
Options? /RENDER/: sc
For X or Y axis? /X/: x
Default limits /N/:
Low limit /0/:
High limit /1/: 0.2

Note: give only one option per line!
Options? /RENDER/:
Limits set by user for x:   0.000000E+00  2.000000E-01
plot data used:       4    206 out of    1000  10000
 Gnuplot command file: ocgnu.plt

"plot" で状態図のプロットを行う。途中の "Options?" で "sc" と入力しているのは "scale_ranges" の短縮形で、ここでは 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 c 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
sc
x
n
0
0.2
render

@$set inter

"@$" の行はコメントである。"@&" では Enter が入力されるまで実行が一時停止される。その他はコマンドが羅列されているだけである。最初の "set echo" は入力されたコマンドを表示するためのものである (コメントも表示される)。最後の "set inter" は "set interactive" の短縮形で、OpenCalphad のコマンド入力状態で終了するためのものである。これがない場合は入力不足のエラーで終了する。そのまま終了してよい場合は "quit y" で終わらせるのがきれいかも。

マクロを実行するには "macro" コマンドを用いる。

--->OC5:macro fe-c-map

マクロの書き方やその他の例については、OpenCalphad ディレクトリの macros ディレクトリの中にある ".OCM" ファイルが参考になる。

参考文献

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

古い