py4vasp 完整弹性模量
从Si实际应变响应读取固定离子与弛豫离子弹性张量,转换GPa并导出矩阵。
阅读本篇目录
从Si实际应变响应读取固定离子与弛豫离子弹性张量,转换GPa并导出矩阵。下面按准备、读取、核对与画图的顺序操作。
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. 准备完整弹性响应#
本例为2原子Si原胞,550 eV、Gamma4³、EDIFF=1E−6。应变和原子有限位移采用:
IBRION = 6
ISIF = 3
NSW = 1
NFREE = 2
POTIM = 0.015
IBRION=6利用对称性得到有限位移响应,ISIF=3包含晶胞应变。clamped-ion表示形变时固定原子分数坐标的响应,relaxed-ion还包括内部原子弛豫;它们不是一次几何优化中的前后两个结构。仅有离子贡献也不能充当完整弹性模量。
准备自己的任务:
mkdir Si-elastic
cp inputs/Si-full-elastic/INCAR Si-elastic/
cp inputs/Si-full-elastic/POSCAR Si-elastic/
cp inputs/Si-full-elastic/KPOINTS Si-elastic/
# 提供与Si结构匹配的POTCAR,再按下文Slurm脚本提交
3. 四阶张量转Voigt矩阵#
第1节完成后,在资料根目录执行:
module load py4vasp/0.11.3
python - <<'PYCODE'
import numpy as np
import py4vasp
c = py4vasp.Calculation.from_path('work/Si-full-elastic')
a = c.elastic_modulus.read()
axes = [(0,0),(1,1),(2,2),(0,1),(1,2),(2,0)]
for name, tensor in a.items():
C = np.array([[tensor[i,j,k,l] for k,l in axes] for i,j in axes]) / 10
print(name, 'GPa', C, sep='\n')
np.savetxt(name+'-GPa.csv', C, delimiter=',')
PYCODE
原生单位是kBar,除10得到GPa。这里Voigt顺序为XX、YY、ZZ、XY、YZ、ZX,不同软件可能把后三个剪切分量排成YZ、ZX、XY;比较时先核对顺序,也不要重复乘剪切因子。
| 结果 | C11/GPa | C12/GPa | C44/GPa |
|---|---|---|---|
| 固定离子 | 155.7911 | 58.9724 | 97.7136 |
| 弛豫离子 | 155.7911 | 58.9724 | 75.5889 |

本例内部弛豫主要降低剪切刚度;体积模量(C11+2C12)/3≈91.2453 GPa。两种张量均满足立方晶体的C11−C12>0、C44>0、C11+2C12>0。用于实际材料报告前,还需收敛平衡结构、截断能、k点和位移幅度;这张表是操作参考,不能代替这些步骤。
head -7 results/data/relaxed_ion-GPa.csv
cat tools-output/Si-full-elastic-elastic_modulus.txt
将自己的输入提交到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和前置文件按正文自行提供;下列输入也在下载包中,不会由后处理脚本自动提交。
Si-full-elastic#
INCAR(完整)
SYSTEM=Si-full-elastic
ENCUT=550
PREC=Accurate
EDIFF=1E-6
EDIFFG=-0.02
IBRION=6
NSW=1
ISIF=3
ISMEAR=0
SIGMA=0.05
LREAL=.FALSE.
LASPH=.TRUE.
LWAVE=.TRUE.
LCHARG=.TRUE.
NELM=160
ALGO=Normal
ISYM=2
LORBIT=11
NBANDS=16
LH5=.TRUE.
NPAR=1
NFREE=2
POTIM=.015
POSCAR(完整)
Si
1.0000000000000000
0.0000000000000000 2.7344629562984917 2.7344629562984917
2.7344629562984917 0.0000000000000000 2.7344629562984917
2.7344629562984917 2.7344629562984917 0.0000000000000000
Si
2
Direct
0.0000000000000000 0.0000000000000000 -0.0000000000000000
0.2500000000000000 0.2500000000000000 0.2500000000000000
KPOINTS(完整)
Small response tutorial mesh; not a convergence study
0
Gamma
4 4 4
0 0 0