py4vasp MD速度与温度
读取Si16真实四步续算速度,说明切片、单位及与原生动能和温度对应的时间层。
阅读本篇目录
读取Si16真实四步续算速度,说明切片、单位及与原生动能和温度对应的时间层。下面按准备、读取、核对与画图的顺序操作。
1. 下载数据,先提取再画图#
下载响应与激子终端实操包,解压后先看现成数据:
unzip py4vasp-response-practical-wave290-*.zip
cd py4vasp-response-practical-wave290
bash preview.sh
再完整运行读取、原生工具与绘图:
bash run.sh
ls results/data
ls plots/figures
run.sh依次执行prepare.sh、extract.sh、tools.sh、plot.sh。结果写入results/data/,原生数据报告和视图矢量在tools-output/,七张PNG在plots/figures/;输出目录受保护,重复运行请换一个新解压目录。随包的figures/可直接查看。
后处理用py4vasp/0.11.3的Python3.11环境,静态图用pymatgen/2026.9.24环境的NumPy2.3.5、Matplotlib3.11.2,只需已分配资源内1个CPU,不重新运行VASP。carriers/保存实际计算导出的自有数值与字段配方;运行时在work/重建最小HDF读取载体,不是原始完整VASP输出。这里全部选定数组保留完整分辨率,无插值、无抽样,不包含PAW、波函数或程序。
inputs/保留本例完整INCAR、POSCAR、KPOINTS。真实GPU计算使用VASP6.6.1/HDF5、NVHPC25.3、CUDA12.8、P100或V10016G;BSE使用VASP6.6.1 CPU/HDF5、Intel oneAPI2024.2、MPI、HDF51.14.6。提取工具不替代VASP求解。
2. 从已保存速度的结构续算#
本例接在真实Si16、300 K的80步AIMD轨迹之后,只新运行4步,每步0.5 fs。原子、晶胞及速度从先前CONTCAR传入;450 eV、Gamma2³、NBANDS=48、EDIFF=1E−6,Nosé–Hoover使用MDALGO=2、SMASS=0。
IBRION = 0
NSW = 4
POTIM = 0.5
MDALGO = 2
SMASS = 0
VELOCITY = .TRUE.
VELOCITY=.TRUE.使实际离子速度写入HDF。续算应保留CONTCAR的速度和热浴相关段,不能只取最上面的原子坐标后重新随机初始化。
mkdir Si-MD-next
cp inputs/Si16-MD-velocity/{INCAR,POSCAR,KPOINTS} Si-MD-next/
# 本例POSCAR已包含实际前一段轨迹的续算信息
# 自己的任务可将自己的上一段CONTCAR复制为POSCAR
3. 最后一步、所有步与切片#
module load py4vasp/0.11.3
python - <<'PYCODE'
import numpy as np
import py4vasp
c = py4vasp.Calculation.from_path('work/Si16-MD-velocity')
print('最后一步:', c.velocity.to_numpy().shape)
v = c.velocity[:].to_numpy()
print('全部4步:', v.shape)
print('第1步:', c.velocity[0].to_numpy().shape)
print('中间两步:', c.velocity[1:3].to_numpy().shape)
np.save('velocities-A-fs.npy', v)
PYCODE
速度单位是 Å/fs。c.velocity默认读最后一步,c.velocity[:]读所有帧;本例对应(16,3)与(4,16,3)。转换m/s时乘10⁵。
4. 与VASP温度比较时,先对齐时间层#
这份MDALGO=2轨迹在HDF与CONTCAR中保存的是步进后的半时刻速度。原生温度和动能使用相邻半时刻速度平均得到的中心时刻速度:
module load py4vasp/0.11.3
python - <<'PYCODE'
import numpy as np
p = np.load('results/data/Si16-velocities.npz')
v = p['velocities_A_fs']
v0 = p['initial_POSCAR_velocity_A_fs']
previous = np.concatenate([v0[None], v[:-1]])
centered = 0.5*(previous+v)
# 保留该VASP版本原生常数,以便逐项核对其打印结果
amu_kg, eV_J, kB = 1.6605402e-27, 1.60217733e-19, 8.6173857e-5
kinetic = 0.5*28.085*(centered**2).sum(axis=(1,2))*amu_kg*1e10/eV_J
temperature = 2*kinetic/(45*kB)
print('动能/eV:', kinetic)
print('温度/K:', temperature)
PYCODE
16原子去除质心平移后有3N−3=45个自由度。本例中心时刻温度依次为 316.9314、315.2088、312.4636、308.7874 K,动能约0.6145020、0.6111620、0.6058393、0.5987114 eV,与原生输出对应。最后CONTCAR速度和最后HDF帧也一致。若换其他MD算法、约束或热浴,应重新确认时间层和自由度,不能普遍假定相同处理。

直接对保存的半时刻速度求动能,会得到图中的另一条曲线;这是时间层不同,不能立刻判断能量公式错了。
head -5 results/data/Si16-velocity-temperature.csv
ls tools-output/native-velocity-arrow-vectors.npy
tools.sh还实际调用velocity.to_view(),该版本用200倍速度长度绘制箭头;这是可视化缩放,不是原子真实位移。四步轨迹只演示续算与读取,不用于扩散、平衡或时间相关函数的收敛结论。
将自己的输入提交到Slurm#
前文解压重画不需要提交VASP。若要新计算,在自己的计算目录提供匹配PAW,将下面内容保存为submit.sh:
#!/bin/bash
#SBATCH --partition=gpu-8p100-hs
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --gres=gpu:p100-16g:1
#SBATCH --time=00:30:00
set -eo pipefail
source /etc/profile
module purge
module load vasp/6.6.1-p100-hdf5
ulimit -s unlimited
export OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1
mpirun --bind-to none -np 1 vasp_std > vasp.log
sbatch submit.sh
squeue -u "$USER"
完成后先确认OUTCAR有正常结束信息、电子步满足EDIFF,再从自己的目录调用本篇接口。两个位移目录需分别提交;输出的vaspout.h5保存对应本例真实数组后才可读取。
完整计算输入#
PAW和前置文件按正文自行提供;下列输入也在下载包中,不会由后处理脚本自动提交。
Si16-MD-velocity#
INCAR(完整)
SYSTEM=Si16-MD-velocity
ENCUT=450
PREC=Accurate
EDIFF=1E-6
IBRION=0
NSW=4
POTIM=0.5
MDALGO=2
SMASS=0
TEBEG=300
TEEND=300
ISIF=2
ISYM=0
NBANDS=48
KPAR=1
ISPIN=1
ISMEAR=0
SIGMA=0.05
ALGO=Normal
NELM=160
LREAL=.FALSE.
LASPH=.TRUE.
LWAVE=.TRUE.
LCHARG=.TRUE.
VELOCITY=.TRUE.
POSCAR(完整)
Si
1.000000000000000
0.0000000000000000 5.4299999999999997 5.4299999999999997
5.4299999999999997 0.0000000000000000 5.4299999999999997
5.4299999999999997 5.4299999999999997 0.0000000000000000
Si
16
Direct
0.0113661885331957 -0.0031349292722918 0.0050132341861828
0.1264654341120804 0.1357203529487100 0.1261680732775972
0.0033580189383363 0.0024909171429076 0.5008590338469046
0.1437575245248596 0.0981754650834316 0.6371641691218567
0.0054663848795665 0.5081377626207593 0.0064577344289510
0.1277827993543630 0.6225245977788940 0.1502867281604470
-0.0099846568032713 0.4713252780584856 0.5228894868397068
0.1030404380092879 0.6233240779039672 0.6328043726130245
0.4969824019379306 -0.0142494268289858 -0.0128637381330601
0.6285359926548079 0.1248689960555792 0.0967850323301152
0.5160003693478975 0.0133167086877408 0.4807547113075363
0.6254974210111015 0.1424723077253332 0.6169890474378646
0.5029979416880442 0.5018022547872227 -0.0017928986262028
0.6311658526421889 0.6171522334969857 0.1280624489089939
0.4778453155902298 0.5151055555358228 0.4968884482211502
0.6097225735793806 0.6409678482754372 0.6135341160789312
0.85940112E-03 -0.16674255E-02 -0.50943033E-02
0.27688664E-02 0.16818900E-02 0.30434753E-02
-0.23435065E-02 0.11620025E-02 -0.32033239E-02
0.21105510E-02 0.49053458E-03 -0.11078122E-02
0.36426852E-03 0.34388501E-02 0.41985150E-02
0.85400986E-03 0.26151170E-02 0.62003468E-04
-0.23170528E-03 -0.78315963E-03 -0.53071443E-02
0.59551182E-02 -0.41498298E-02 -0.24097115E-02
0.21313909E-02 0.31358397E-03 -0.85984509E-03
-0.18301365E-02 0.18126118E-02 0.43480553E-03
-0.64464341E-02 -0.89096703E-03 0.84386865E-02
-0.14634990E-02 -0.38394441E-02 0.42733307E-02
-0.41715221E-02 -0.42822243E-02 0.69318996E-03
-0.60063471E-04 0.70093223E-03 -0.21100083E-02
-0.16112638E-02 0.12751709E-03 0.56917343E-04
0.31145248E-02 0.32700111E-02 -0.11087751E-02
1
0.5000000000000000
-0.38031413E+00 0.64342802E-02 0.57123470E-02 -0.38638744E+00
0.11015308E-01 0.99674686E+00 0.52105767E-02
0.12655551E+00 0.13591052E+00 0.12623287E+00
0.33719317E-02 0.21820390E-02 0.50095212E+00
0.14363193E+00 0.98199047E-01 0.63733493E+00
0.58012420E-02 0.50818951E+00 0.64395302E-02
0.12786674E+00 0.62244637E+00 0.15044359E+00
0.98974561E+00 0.47110632E+00 0.52308711E+00
0.10246426E+00 0.62367837E+00 0.63299843E+00
0.49685912E+00 0.98579468E+00 0.98728842E+00
0.62872373E+00 0.12472130E+00 0.96764207E-01
0.51664467E+00 0.13449454E-01 0.48002837E+00
0.62558478E+00 0.14277844E+00 0.61654815E+00
0.50302476E+00 0.50183927E+00 0.99778597E+00
0.63110374E+00 0.61702005E+00 0.12818910E+00
0.47792799E+00 0.51502812E+00 0.49681752E+00
0.60967868E+00 0.64090964E+00 0.61387911E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
KPOINTS(完整)
Si16 electronic mesh
0
Gamma
2 2 2
0 0 0