Gibbs2 状态方程与应变模型
查看12种EOS入口、8类应变变量和实际拟合差异,选择当前可用的导数计算方式。
阅读本篇目录
下载Gibbs2实操包。解压后进入包目录;完整输入、原始数据、提取脚本与高清图随包提供。本专题使用1.0.68固定源码版本、GNU Fortran13.3构建的双精度串行CPU入口,配套Python/Matplotlib与Gnuplot处理结果。每个流程从新的目录开始。
1. 先选择拟合形式#
当前入口有POLYGIBBS、BM2/3/4、PT2/3/4/5、MURN、ANTONS、VINET、AP2。配套例子使用同一组官方diamond C数据分别运行,并用解析压力积分生成的输入示范AP2;它们是Gibbs2实际计算,不是把模型名称列出来就当作结果。
运行与查看#
在已分配的CPU资源内,从包根目录执行:
module load gibbs2/1.0.68
bash run.sh C-EOS-vinet
bash run.sh C-EOS-bm4
bash run.sh C-strain-bm
bash run.sh analytic-AP2
ls work/C-EOS-vinet
tail -n 12 work/C-EOS-vinet/stdout.log
程序每次1个串行进程;不需要GPU或mpirun。原始输入、.eos_static、.eos与.efit按条件隔离保存。
inputs/C-EOS-vinet/in.ing的运行输入:
root result
mm 24.0214
nat 2
nelectrons 12
pressure 0 10 100
temperature 0
set notrans
phase C file ../../data/upstream/c_pbe/c.res units energy ry tmodel static fit vinet
end
inputs/analytic-AP2/in.ing的运行输入:
root result
mm 28.0855
nat 1
nelectrons 14
pressure 0 5 20
temperature 0
set notrans
phase analytical tmodel static fit ap2
80 -9.985561111004021
81 -9.987229599022127
82 -9.988765302676549
83 -9.990175135397813
84 -9.991465613475059
85 -9.992642882262464
86 -9.993712740410039
87 -9.994680662286846
88 -9.995551818748712
89 -9.996331096388321
90 -9.997023115392711
91 -9.997632246121782
92 -9.998162624511064
93 -9.998618166392717
94 -9.99900258082039
95 -9.99931938247598
96 -9.999571903229574
97 -9.999763302917628
98 -9.999896579398955
99 -9.99997457794295
100 -10
101 -9.999975411399801
102 -9.999903250019567
103 -9.999785832960711
104 -9.999625363269377
105 -9.999423936233471
106 -9.999183545286151
107 -9.998906087543427
108 -9.998593369001355
109 -9.998247109416305
110 -9.997868946890025
111 -9.997460442179543
112 -9.997023082750434
113 -9.9965582865906
114 -9.996067405800433
115 -9.995551729974082
116 -9.995012489385415
117 -9.994450857991371
118 -9.993867956264372
119 -9.993264853864741
120 -9.992642572163216
endphase
end
AP2需要NELECTRONS。本控制例Nat=1、Z=1,设总电子数14;不要将总电子数与PAW价电子数混用。无约束非线性拟合对体积区间和初始参数敏感,应查看真实输出和残差,不能把没有数据的结果表当作有效拟合。
2. 应变多项式#
fit strain 名称 阶数直接控制多项式。当前8类变量为:
| 名称/别名 | 变量形式(x=V/Vs) |
|---|---|
| bm / eulerian | (x^(-2/3)-1)/2 |
| natural / pt | ln(x)/3 |
| lagrangian / lagr | (x^(2/3)-1)/2 |
| infinitesimal / inf | 1-x^(-1/3) |
| quotient / x1 | x |
| x3 | x^(1/3) |
| xinv3 / x3inv | x^(-1/3) |
| v | V |
Vs是内部数值标度,接近离散能量最低点。包内8类C例均为四阶;阶数0采用程序的多项式组合方式,不是常数拟合。
inputs/C-strain-bm/in.ing的运行输入:
root result
mm 24.0214
nat 2
nelectrons 12
pressure 0 10 100
temperature 0
set notrans
phase C file ../../data/upstream/c_pbe/c.res units energy ry tmodel static fit strain bm 4
end
3. 当前版本的实际选择#
直接fit bm2的能量拟合可运行,但高阶导数字段不用于这里的B′;直接fit bm3在有限压力的部分导数字段也有范围限制。需要BM2/BM3物理导数时使用fit strain bm 2/3,本专题的Si与解析例已经给出相应结果。
REG提供LSQ/LAD;FIX用于固定参数。包内regression-lsq、regression-lad含一个明确的解析离群点,fixed-Vinet-Bprime固定B′=4。对这些输入与权重选择,可单独运行:
bash data-tools.sh
cat language/fixed-Vinet-Bprime/in.ing
head -n 8 language/fixed-Vinet-Bprime/result.eos_static

19个实际C EOS/应变拟合的残差与零压模量;AP2另用清楚标注的解析控制。
从原始结果重新提取、画图#
若想先看配套数据,在另一份新解压目录执行:
bash analyze.sh
ls analysis-reference
ls figures-reference
它读取 reference/ 原始输出,重新提取表格并生成16张高清图。完整重算时,在新目录运行 bash run-all.sh,最终数据在 analysis/、图片在 figures/。同名结果目录已存在时会受到保护;只算一个条件时,不要调用需要全部条件的整包分析。
相关入口:Gibbs2专题、固定版本源码与手册。以本专题对应的集群版本与输入为准;有限体积、温压和频率网格是操作示例,真实材料计算需要检查相应收敛范围。