ASE专题

ASE有限差分振动操作示例

从N2小模型学习优化、正负位移、频率提取和零模判断。

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

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

1 先跑通有限差分振动流程#

使用ASE 3.29.0内置EMT对N₂做流程演示。EMT中的N参数不适合定量分子光谱预测,本页数值只用来理解位移、力和振动模式;研究分子频率时应换成适合的量子化学或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 vibrations

脚本先用BFGS优化分子,最大力阈值0.005 eV/Å,再对每个自由坐标做±0.01 Å位移。

from ase.build import molecule
from ase.calculators.emt import EMT
from ase.optimize import BFGS
from ase.vibrations import Vibrations
atoms = molecule('N2')
atoms.calc = EMT()
BFGS(atoms).run(fmax=0.005, steps=100)
vib = Vibrations(atoms, name='vib', delta=0.01)
vib.run()
vib.summary()
print(vib.get_frequencies())

N2经验势演示的六个笛卡尔振动特征值

两个原子共有6个笛卡尔自由度。线性自由分子的平移、转动应构成5个零模,剩下一个伸缩模;有限位移和残余力使零附近出现小数值。这里伸缩模为 1231.349 cm⁻¹,另外两个接近转动的数值约8.931 cm⁻¹,不应报告成两个真实低频振动。虚部约10⁻⁷ cm⁻¹也只是本例的零模数值残差。

2 保存什么,再换自己的计算器#

cat vibrations/frequencies.txt
cat vibrations/frequencies.csv
ls vibrations/vib

保留优化结构、每个位移的力及参考计算参数。换成DFT后,先收敛原结构,再检查正负位移、电子收敛、位移幅度和约束;不要简单把所有虚频取绝对值。脚本的计算器可以替换,但更换计算器会改变结果,不能沿用本页频率。

查看和复现配图#

下载包 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%查看原图 ↗