ATAT与OpenCalphad:计算相图和读取结果
实际计算温度—组分相图与800 K截面,区分总组分、相组成和相含量。
阅读本篇目录
接着输入准备操作,当前目录应为ATAT-OpenCalphad,且已经运行bash setup.sh。实例包下载。
1 启动实际相平衡计算#
bash run.sh
脚本按顺序计算两套目标:350–1100 K的80个温度—组分点,以及800 K的31个组分点。随机采样种子固定为612001,组分按ATAT命令文件的四位小数输入。每个目标之前另求一次x(Au)=0.5的初始化平衡,总计111个目标点和111个初始化点;相图与CSV展示的是111个目标点。
计算使用ocplotpd -tdb=regular.tdb -e=Cu,Au -n=80 -T0=350 -T1=1100 -np=1 -ha对应的参数,带上前一篇说明的个人初始化入口。-n是采样目标数,-T0/-T1是温度上下界,二者相同得到定温截面;-np=1只启动一个OpenCalphad进程,-ha提高平衡求解精度。
每个温度下的核心OpenCalphad操作如下,末尾例子是实际计算的一个组分:
set cond t=800 p=1e5 n=1
set cond x(AU)=0.5
calc equil
set cond x(AU)=0.2560
calc no_global
list result 1
压力为100000 Pa,总物质的量为1 mol。先从中心组分取得初始相,再求实际总组分;不是把中心组分的结果复制给目标点。不同目标的相含量由原生求解器重新计算。
重复运行时,程序会提示已有new-work。请先保留自己的结果,另开一个解压目录计算,避免把两次输出混在一起。
2 看目标点的汇总表#
head -8 new-work/analysis/equilibria.csv
主要列依次包括:计算分支、目标编号、温度、总Au摩尔分数、原生平衡G、独立公式计算的G、相数。native_G_Jmol来自OpenCalphad;analytic_G_Jmol是本例已知自由能模型的独立核对,不会替换前者。
两套目标点均完成求解。本次原生G与独立公式的最大差为0.004984 J/mol以内,保留OpenCalphad文本输出自身的精度。这个核对是本模型的操作检查,不是对其他数据库或真实材料的精度承诺。

3 区分三个容易混淆的量#
总组分是用户给定的整份样品的组分;相组成是每个共存相内部的组分;相含量是它们各占多少。在同一个定温二相区内,总组分变化时,相组成可以保持相同,而两相含量随之变化。
800 K实际输出如下,表内相含量为摩尔分数:
| 总x(Au) | 低Au相x(Au) | 高Au相x(Au) | 低Au相含量 | 高Au相含量 | 平衡G(J/mol) |
|---|---|---|---|---|---|
| 0.2560 | 0.0700909 | 0.929909 | 0.7838 | 0.2162 | −385.107 |
| 0.4928 | 0.0700909 | 0.929909 | 0.5084 | 0.4916 | −385.107 |
| 0.7802 | 0.0700909 | 0.929909 | 0.1741 | 0.8259 | −385.107 |
FCC_A1#1和FCC_A1_AUTO#2是同一个FCC_A1相的两个组分集合,表示这个模型的互溶间隙;它们不意味着两种不同晶格。相编号可能随求解顺序互换,判断低Au/高Au相应读取组分,不能只看编号。

图中点是原生结果,线来自本例自由能模型和杠杆定则。先通过共同切线确定平衡相组成,再用物料守恒求相含量。检查原始结果可执行:
grep -n 'Output for equilibrium' new-work/fixed-800K/alltmp.oco | head
head -20 new-work/fixed-800K/phase_FCC_A1.dat
phase_FCC_A1.dat每行六列分别是共存相组编号、相编号、相名、T、x(Cu)、x(Au)。这里画x(Au)应读取第6列,温度读取第4列。alltmp.oco保留每个目标的详细原生输出,包括相物质的量和组分;结构化结果在analysis/equilibria.json。
ocplotpd的相界/系线绘图文件只收集多相目标,单相点仍在原生输出和完整CSV中。不能用.dat的行数充当本次所有平衡点数量。
4 换成自己的材料前#
先选择有使用权限的评估数据库,确认元素、相、温度和压力适用范围;之后再设置采样范围与求解起点。实际数据库可能包括多个相和亚点阵,应检查平衡状态、质量守恒与初始相选择,不宜只替换这份TDB的元素符号。前期DFT能量也需要按统一参考态构建和拟合热力学模型,再传给CALPHAD;不能把几个DFT总能量直接当成完整TDB。
下一步阅读原生绘图和数据导出。