GPAW分子优化与Si状态方程
ASE BFGS水分子优化、五个Si体积点与平衡体积拟合。
阅读本篇目录
下载完整Python输入、原始结果、CSV和绘图脚本。以下短命令在解压目录、已分配的CPU资源中执行,输出写入 work/。本模块为CPU构建,加载GPU资源不会自动启用GPU计算。
1 优化水分子#
bash run.sh water-lcao-opt
核心代码如下,完整参数在run_case.py:
from ase.build import molecule
from ase.optimize import BFGS
from gpaw import GPAW, FermiDirac
atoms = molecule('H2O')
atoms.center(vacuum=3)
atoms.calc = GPAW(mode='lcao', basis='dzp', h=0.25,
xc='PBE', nbands=12, occupations=FermiDirac(0.01),
convergence={'energy':1e-6,'density':1e-5,'eigenstates':1e-8},
txt='gpaw.txt')
BFGS(atoms, trajectory='optimization.traj',
logfile='optimization.log').run(fmax=0.02, steps=60)
本次最终最大原子力约0.00379 eV/Å,总能−12.69046147 eV。晶胞保持固定;这里不是晶胞优化,也没有让真空收缩。

2 Si的五个体积点#
bash run.sh si-eos-0.94
bash run.sh si-eos-0.97
bash run.sh si-eos-1
bash run.sh si-eos-1.03
bash run.sh si-eos-1.06
输入由Si原胞在参考体积的94%、97%、100%、103%、106%处缩放得到。体积比例不是晶格长度比例:晶格矩阵乘体积比例的三次方根,原子分数位置保持。
各点固定PW=250 eV、相同2×2×2默认MP网格。电子能量分别计算后,才做Birch–Murnaghan拟合。
python - <<'FIT'
import json
from pathlib import Path
from ase.eos import EquationOfState
from ase.units import kJ
rows = [json.loads((Path('work')/('si-eos-'+str(v))/'RESULT.json').read_text())
for v in [0.94,0.97,1,1.03,1.06]]
fit = EquationOfState([r['volume_A3'] for r in rows],
[r['energy_eV'] for r in rows], eos='birchmurnaghan')
v0, e0, B = fit.fit()
print(v0, B/kJ*1e24)
FIT

本例平衡体积约41.21050 ų/2原子原胞、体模量约88.30 GPa;极小值落在采样范围内。它是在固定立方晶型约束下用E–V曲线优化体积,不能代替任意低对称晶胞的形状优化。
3 检查输出和适用范围#
tail work/water-lcao-opt/optimization.log
ls work/water-lcao-opt/structure.xyz
拟合前应检查每个点电子收敛、能量方法一致和最小值被包围。若最小值在区间外,应扩大采样,而不是外推一个看似精确的晶格常数。k网格和PW截断仍需对目标精度检查。
包内水分子的FD和PW单点是另外的模式示例,其中PW使用周期真空盒,边界条件与非周期分子例不同;不将这些原始总能直接当成相同孤立边界下的模式误差。
需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。