ASE专题

ASE状态方程与空位结构优化

用铜EMT算例学习13点EOS、固定晶胞原子优化和空位形成能。

更新于 2026-10-27约 3 分钟阅读按任务与环境选择适用配置
阅读本篇目录

本文使用鸢算科技集群实际运行的小算例。先下载输入、完整脚本与参考数据并解压,以下命令从解压目录开始。reference 保存原始参考结果,自己的运行放在 work,避免覆盖。

1 先计算铜的能量—体积曲线#

本例使用ASE 3.29.0内置EMT经验势。它适合快速学习流程;这些数值不是VASP或其他DFT结果。

module purge
module load ase/3.29.0
mkdir -p work/ase
cp scripts/ase_examples.py work/ase/
cd work/ase
python ase_examples.py eos
python ase_examples.py vacancy

这两步按顺序运行:空位算例读取EOS拟合出的晶格常数。若已完成第一篇建模,可在同一 work/ase 目录直接执行这两个命令,不必重新复制。

EOS对原胞晶格长度乘0.94至1.06的13个系数,缩放时保持分数坐标。用Birch–Murnaghan方程拟合:

from ase.build import bulk
from ase.calculators.emt import EMT
from ase.eos import EquationOfState
import numpy as np
a = bulk('Cu', 'fcc', a=3.6)
volumes, energies = [], []
for scale in np.linspace(0.94, 1.06, 13):
    b = a.copy()
    b.set_cell(a.cell * scale, scale_atoms=True)
    b.calc = EMT()
    volumes.append(b.get_volume())
    energies.append(b.get_potential_energy())
v0, e0, B = EquationOfState(volumes, energies, eos='birchmurnaghan').fit()
print(v0, e0, B)

铜EMT能量体积拟合曲线

结果为平衡原子体积 11.569384 ų、晶格常数 3.590239 Å、体积模量 133.069 GPa。脚本中B原始单位为eV/ų,应除以ase.units.GPa后报告GPa。

2 再优化空位周围原子#

建立108原子完美胞,删除一个原子得到107原子空位胞,保持晶胞固定,用BFGS移动原子直到最大力小于0.02 eV/Å。

from ase.optimize import BFGS
# atoms是已赋予EMT计算器的空位结构
opt = BFGS(atoms, logfile='opt.log', trajectory='vacancy.traj')
opt.run(fmax=0.02, steps=150)

这是原子位置优化,不是晶胞优化。EOS的各体积点是预先设置的晶胞尺寸;晶胞优化需要明确的晶胞自由度和应力目标。

空位结构原子优化的能量变化

本例最大残余力 0.016720 eV/Å。同一经验势与晶胞条件下,空位形成能为 E(107)−107/108×E(108),得到 1.225338 eV。这一小超胞没有完成缺陷有限尺寸收敛。

cat eos/RESULT.json
cat vacancy/RESULT.json
tail vacancy/opt.log

查看和复现配图#

下载包 figures 中是高清图片,可点击正文图片放大。reference 中保存数据与结果表;重新绘图可执行:

module purge
module load ase/3.29.0
mkdir -p work/replot
cp -r reference work/replot/
cp plot_reference.py work/replot/
cd work/replot
python plot_reference.py

不同教程共用此资料包;同一个脚本不需要重复下载。重新运行算例时使用新的工作目录。

方法与接口参考:ASE官方教程。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗