py4vasp专题

py4vasp 完整弹性模量

从Si实际应变响应读取固定离子与弛豫离子弹性张量,转换GPa并导出矩阵。

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

从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

Si实际完整弹性张量

本例内部弛豫主要降低剪切刚度;体积模量(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

继续阅读#

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

查看配图

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

100%查看原图 ↗