Gibbs2 压力积分与额外属性插值
将P(V)实际转换成相对E(V)后交原生程序,并把额外体积属性映射到V/P/PT。
阅读本篇目录
下载Gibbs2实操包。解压后进入包目录;完整输入、原始数据、提取脚本与高清图随包提供。本专题使用1.0.68固定源码版本、GNU Fortran13.3构建的双精度串行CPU入口,配套Python/Matplotlib与Gnuplot处理结果。每个流程从新的目录开始。
1. P(V)先积分为相对E(V)#
当前入口优先采用E(V)路线。包内转换工具读两列V(bohr³)、P(GPa),用CubicSpline积分计算相对E(Ha),令中间体积的参考能为0。这个参考是任意的,不能拿来对齐不同相。
bash pv-to-ev.sh data/analytic-thermal/pressure.dat my-energy.dat
head -n 8 my-energy.dat
整套数据流程会先生成conversion-work/energy.dat,随后真正让原生程序读取这个新文件,而不是偷偷改用一份固定答案:
language-inputs/PV-converted-EV/in.ing的运行输入:
root result
mm 56.171
nat 2
pressure 0 5 20
temperature 0
set notrans
phase model file ../../conversion-work/energy.dat tmodel static fit strain bm 3
end
运行与查看#
从新解压目录运行数据工具流程:
bash data-tools.sh
ls language
cat TOOLS.json
每个操作在 language/条件名/ 中保存输入与原生输出;CLI选项在 cli/。它们与 work/ 的计算条件分开,便于找到文件。
本解析控制得到V0=100.0000 bohr³、B0≈147.1051 GPa;能量最低点约0,源于积分参考。需要真实材料参数时,应把可靠的P(V)采样、积分区间与拟合误差一起检查。
2. 插值随体积变化的额外属性#
PHASE的interpolate 4声明第4列是额外属性。全局INTERPOLATE指定要在V、静态P或P/T处读取这个属性。下面用已知解析关系属性=1+V/100说明数据流,它不是新的DFT带隙。
language-inputs/satellite-linear-interpolation/in.ing的运行输入:
root result
mm 56.171
nat 2
pressure 0 5 20
temperature 0 300 300
set notrans
phase model file ../../data/analytic-thermal/satellite.dat tmodel debye_input fit strain bm 3 interpolate 4
interpolate
V
85 100 115
P
0 10 20
PT
0 300
endinterpolate
end
cat language/satellite-linear-interpolation/result.interp
cat language/satellite-input-P-T-grid/result.interp
第一例实际输出7行,第二例按输入P–T网格输出10行。PT指定的温度须在温度列表里;插值位置也要在原始体积范围内。这个功能读的是额外属性,不是指定体积的振动自由能求解器。

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