VTST专题

VTST:晶胞缩放、格式转换与速度清理

区分改变晶胞与缩放原子,了解CIF精度,并在副本中清除速度区块。

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

下载VTST几何与模式完整示例,保存为example.zip:

python3 -m zipfile -e example.zip .
cd vtst-geometry-mode-examples
bash results.sh
bash plot.sh

这几步读取参考数据并画图。自己执行这些短工具时,运行bash run.sh;结果在work/,已有目录会保留。bash read.sh work核对新结果。这里不启动VASP,也不进行结构优化或MD;结构来自前面的真实NH₃翻转实例,脚本为已安装的VTST scripts1040,使用系统Perl及配套模块,不需要MPI/CUDA编译。

1. 改变晶胞,先决定原子怎样跟着变#

本例原始晶胞为12×12×12 Å,POSCAR缩放因子为1。先看输入:

cat inputs/POSCAR
module load vtstscripts/1040
mkdir cell-demo
cp inputs/POSCAR cell-demo/
cd cell-demo
boxset.pl POSCAR 1.25
head -n 12 POSCAR.out

对这个输入,1.25把晶胞变为15×15×15 Å,但原子的笛卡尔坐标保持不变,分数坐标除以1.25。这不是把分子键长拉长25%,也不是原子始终保持相同分数位置的均匀应变。

参数是POSCAR的缩放因子;原始因子、基矢及负体积写法不同时,不要把它误当成“直接输入新盒长15”。运行后读取输出晶胞与笛卡尔坐标,再决定是否用于下一步计算。

晶胞改变与原子坐标

本例全部原子的笛卡尔坐标最大差约5×10⁻¹⁴ Å,属于文本读写的浮点误差。若目标是应变研究,应明确选择是否随晶胞缩放原子;不要用本例结果代替结构弛豫。

2. 导出CIF,保留POSCAR作为计算原件#

pos2cif.pl POSCAR
head -n 20 POSCAR.cif

这个版本只输出五位小数的分数坐标。本例最大笛卡尔舍入差约3.8×10⁻⁵ Å;CIF适合查看结构,但它不是原POSCAR的无损副本。计算续跑和精密力差比较继续使用原POSCAR/CONTCAR。

ASE可能根据包含POSCAR的文件名猜格式;读取此文件时显式指定:

/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python - <<'PY'
from ase.io import read
a = read('POSCAR.cif', format='cif')
print(a.cell.lengths())
print(a.cell.angles())
print(a.get_volume())
PY

当前安装的老getangle.py存在语法问题。读取角度、体积可用上面ASE方法;原POSCAR的三个角为90°、体积1728 ų。

3. 删除速度区块,会覆盖输入#

posvdel.pl最终用结果替换原文件。先在工作副本中备份:

cp POSCAR POSCAR.before-strip
posvdel.pl POSCAR

本例可运行包中的work/strip-velocity-blank/保留了真正含四行速度的输入副本与清理结果。该脚本识别的区块是“坐标之后空一行,紧接每原子三分量速度”。本例内容为:


0.1 0.0 0.0
0.0 0.1 0.0
0.0 0.0 0.1
0.0 0.0 0.0

额外插入Cartesian标记的其他格式不能直接交给这个老脚本;它可能误判而仍然正常退出。处理自己的CONTCAR时先检查区块格式,清理后核对元素、原子数、晶胞和坐标。本操作仅删速度,不重新优化结构。

见近邻与局部RDF和位移自由度与模式。

脚本说明:VTST官方文档。

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

查看配图

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

100%查看原图 ↗