Gibbs2 参考体积与经验修正
使用pshift、bpscal、apbaf及use选择参考体积或模量,并保留参考温压和拟合残差。
阅读本篇目录
下载Gibbs2实操包。解压后进入包目录;完整输入、原始数据、提取脚本与高清图随包提供。本专题使用1.0.68固定源码版本、GNU Fortran13.3构建的双精度串行CPU入口,配套Python/Matplotlib与Gnuplot处理结果。每个流程从新的目录开始。
1. 先确认为什么需要修正#
经验修正改变静态能量曲线,用给定温压下的参考体积或模量约束模型。它不能自动修复声子、泛函或全部温区的误差。参考数据的化学式、单位和温压必须与输入对应。
运行与查看#
在已分配的CPU资源内,从包根目录执行:
module load gibbs2/1.0.68
bash run.sh official-empirical-corrections
ls work/official-empirical-corrections
tail -n 12 work/official-empirical-corrections/stdout.log
程序每次1个串行进程;不需要GPU或mpirun。原始输入、.eos_static、.eos与.efit按条件隔离保存。
inputs/official-empirical-corrections/in.ing的运行输入:
# Diamond
# Bulk modulus: 446 (Occelli2004)
# V0 : 3.4170 cm3/mol (/ 6.02214179e23 * 2 * 1e24 / .52917720859^3) = 76.58092 (Occelli2004)
root 001_eec
set notrans
mm 24.0214
vfree 2
pressure 0
temperature 0 10 3000
phase LDA:uncorr file ../../data/upstream/c_lda/c.res tmodel qha \
units energy ry freq cm-1 \
prefix ../../data/upstream/c_lda/
phase PBE:uncorr file ../../data/upstream/c_pbe/c.res tmodel qha \
units energy ry freq cm-1 \
prefix ../../data/upstream/c_pbe/
phase LDA:pshift file ../../data/upstream/c_lda/c.res tmodel qha \
units energy ry freq cm-1 \
prefix ../../data/upstream/c_lda/ \
eec pshift 76.58092
phase PBE:pshift file ../../data/upstream/c_pbe/c.res tmodel qha \
units energy ry freq cm-1 \
prefix ../../data/upstream/c_pbe/ \
eec pshift 76.58092
phase LDA:apbaf file ../../data/upstream/c_lda/c.res tmodel qha \
units energy ry freq cm-1 \
prefix ../../data/upstream/c_lda/ \
eec apbaf 76.58092
phase PBE:apbaf file ../../data/upstream/c_pbe/c.res tmodel qha \
units energy ry freq cm-1 \
prefix ../../data/upstream/c_pbe/ \
eec apbaf 76.58092
phase LDA:bpscal file ../../data/upstream/c_lda/c.res tmodel qha \
units energy ry freq cm-1 \
prefix ../../data/upstream/c_lda/ \
eec bpscal 76.58092 446
phase PBE:bpscal file ../../data/upstream/c_pbe/c.res tmodel qha \
units energy ry freq cm-1 \
prefix ../../data/upstream/c_pbe/ \
eec bpscal 76.58092 446
end
noscal保持原曲线;pshift Vref调整压力参考;bpscal Vref Bref还约束模量;apbaf Vref用不同体积修正形式;use 相编号复用另一相的修正,MgO两相示例实际使用了这一方式。不能仅换名字就认为修正相同。
2. 指定参考P与T#
以下解析控制将Vref=100 bohr³放在5 GPa、300 K,不把它默认为零压零温:
language-inputs/EEC-explicit-P-T/in.ing的运行输入:
root result
mm 56.171
nat 2
pressure 0 5 20
temperature
0 100 200 300 500 800
endtemperature
set notrans
phase model file ../../data/analytic-thermal/TD.dat tmodel debye_input prefix ../../data/analytic-thermal fit strain bm 3 eec pshift 100 eec_p 5 eec_t 300
end
bash data-tools.sh
head -n 12 language/EEC-explicit-P-T/result.eos
本例该温压实际输出V=100.0015 bohr³,保留有限能量重拟合残差,不将它改写为恰好100。设置参考值不意味着每个输出导数量也得到实验标定。
3. 读真实修正曲线#
官方C例的参考体积是298.15 K的76.58092 bohr³;原生展示网格为10 K步长。因此不要把图中300 K最近点当作恰好298.15 K。

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