binplotを使用した二元状態図

 Thermo-Calc TDB ファイルを使用して二元状態図を計算する手順を説明します。

Al-Zn (S. Mey, 1993)

 Al-Zn 状態図には、高温の液相(L)、Al側のFCC相、Zn側のHCP相が単相として現れており、それ以外は二相領域となっています。FCC相の温度277℃、Zn濃度16.5 ~ 59.0%には溶解度ギャップが含まれています。

662dfa8d66b7421b985ffcbb34fb5740

 参考文献:S. an Mey, Zeitschrift für Metallkunde 84(7) (1993) 451-455.

 まず必要なライブラリを読み込みます。マジックコマンド %matplotlib inline は Jupyter notebookでのみ使用します。(https://ipython.readthedocs.io/en/stable/interactive/magics.html)

[1]:
%matplotlib inline
import matplotlib.pyplot as plt
from pycalphad import Database, binplot
import pycalphad.variables as v

binplot

 状態図は binplot を使用して計算します。

現在のバージョンでは、不変反応 (二元状態図上の三相領域) は自動的に検出されないため描画されません。

 binplotを実行する際、4つの引数を指定する必要があります。

  1. database

  2. components

  3. phases

  4. conditions

1. database : TDB ファイル

 TDB ファイル(Thermo-Calc)は現在の作業ディレクトリに配置してください。Jupyter ノートブックを使用している場合、作業ディレクトリはそのノートブックが保存されているディレクトリです。作業ディレクトリを確認するには、次のコマンドを実行します。

import os
print(os.path.abspath(os.curdir))

 TDBファイルは文献等で入手することができます。Thermodynamic DataBase Database (TDBDB) には利用可能な多くのデータベースが掲載されており、元の論文やTDBファイルへのリンクもあります。

 この例ではデータベースをalzn_mey.tdbとしています。

[2]:
# Load database
db_alzn = Database('alzn_mey.tdb')

2. component : 元素のリスト

 計算に用いる元素のリストを指定します。この例ではアルミニウム(AL)、亜鉛(ZN)、空孔(VA)を指定しています。

[3]:
comp_alzn = ['AL', 'ZN', 'VA']

3. phases : 相のリスト

 計算で考慮する相を選択します。この例では考慮する相をLIQUID, FCC_A1, HCP_A3としています。これらの相をphases_alznとして取り込むには以下のようにします。

[4]:
# choose the phases that will be considered
phases_alzn = ['LIQUID', 'FCC_A1', 'HCP_A3']

  alzn_mey.tdbにどのような相が含まれているか確かめるには、メモ帳などのテキストエディタで alzn_mey.tdbを開き、PHASE で始まっている行を確認してください。LinuxかMacを使っている場合には、以下のようにしても相の情報が得られます。

[5]:
!grep PHASE alzn_mey.tdb
$ PARAMETERS FOR LIQUID PHASE
 PHASE LIQUID %  1  1.0  !
 PHASE FCC_A1  %  1  1.0  !
 PHASE HCP_A3  %  1  1.0  !

  alzn_mey.tdbにはLIQUID、FCC_A1、HCP_A3相が含まれています。

4. conditions : 状態変数

 状態図を作成する際に、独立に自由に変えられる変数(温度 T ,圧力 P ,成分の濃度等)を状態変数といい、その数を系の自由度と呼びます。

 計算を行う際には、これらの状態変数を自由度がゼロになるように設定する必要があります。

 温度は K(ケルビン),圧力は Pa(パスカル),全原子数 N は mol(モル)を単位としています。濃度にはモル分率 X(『el』) や質量分率 W(『el』) が用いられます。ここで 『el』 には元素名を書きます。

 ここでは以下の状態変数について指定します。

  • v.X(『ZN』):Znの組成

  • v.T:温度

  • v.P:圧力

  • v.N:モル数

 状態変数 : 数値の組み合わせで指定します。数値にはスカラー、一次元配列、範囲を指定する(start, stop, step)が使用できます。

 以下の例では、

  • Znの組成を (0,1,0.02)とし、0から1までの範囲を0.02ステップ

  • 温度は(300, 1000, 10)とし、300 Kから1000 Kまで10 Kステップ

  • 圧力は101325 Pa(1気圧)

  • 全原子数として1モル

が指定されています。

[6]:
cond = {v.X('ZN'):(0,1,0.02), v.T: (300, 1000, 10), v.P:101325, v.N: 1}

 binplotで状態図を作図します。データベース、元素、相、状態変数の順に指定しています。

[7]:
# Compute the phase diagram and plot it
binplot(db_alzn, comp_alzn , phases_alzn, cond)

plt.show()
_images/BinaryExamples_20_0.png

課題

  • Moodle上で提出する。

  • JupyterNotebook形式(*.ipynb)で提出する。

  • 学籍番号、氏名を忘れずに記載する。

  • コードを実装するにあたって考えた過程や工夫したポイント、動作確認の方法等を記述してあれば評価時に考慮します。

moodleで配布した講義資料内にはAl-Mg_Zhong.tdbNI_AL_DUPIN_2001.TDBalfe_sei.TDBnbre_liu.tdbが含まれている。

Al-Mg_Zhong.tdb:Al-Mg2元系の熱力学データベース

NI_AL_DUPIN_2001.TDB:Ni-Al2元系の熱力学データベース

alfe_sei.TDB:Al-Fe2元系の熱力学データベース

nbre_liu.tdb:Nb-Re2元系の熱力学データベース

各熱力学データベースを読み込み2元系状態図を作成せよ。温度範囲の下限は室温(300 K)、上限は全組成領域で液相が安定になる任意の温度とする。

Al-Mg (Y. Zhong, 2005)

d48541539ca945b59ae4070f3ed7c965

 参考文献:Y. Zhong, M. Yang, Z.-K. Liu, CALPHAD 29 (2005) 303-311 doi:10.1016/j.calphad.2005.08.004

Al-Ni (Dupin, 2001)

9997d4c90dd241b9ba5dd4a6dc46d31e

Components and conditions can also be stored as variables and passed to binplot.

  1. Dupin, I. Ansara, B. Sundman, CALPHAD 25(2) (2001) 279-298 doi:10.1016/S0364-5916(01)00049-9

Al-Fe (M. Seiersten, 1991)

60798f5025b249d89e1ea451da037419

Removing tielines

Nb-Re (Liu, 2013)

X.L. Liu, C.Z. Hargather, Z.-K. Liu, CALPHAD 41 (2013) 119-127 doi:10.1016/j.calphad.2013.02.006, Gupta, K.P. The Nb-Ni-Re (Niobium-Nickel-Rhenium) System. J. Phase Equilib. Diffus. 31, 569–572 (2010). https://doi.org/10.1007/s11669-010-9707-7

58119d5c146b4002af162ebed807ed2a