py4vasp 原子局域磁矩
用自旋极化Fe真实结果区分投影电荷、原子分轨道磁矩与晶胞总磁矩。
阅读本篇目录
用自旋极化Fe真实结果区分投影电荷、原子分轨道磁矩与晶胞总磁矩。下面按准备、读取、核对与画图的顺序操作。
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原子bcc Fe,550 eV、Gamma4³、NBANDS=32、EDIFF=1E−6。关键设置:
ISPIN = 2
MAGMOM = 2.2 2.2
LORBIT = 11
MAGMOM提供初始磁化猜测,不是固定最终磁矩。LORBIT=11输出原子分轨道投影。本例为共线自旋,下面的total表示相应原子的自旋投影分轨道数据;不应照搬到SOC非共线的分量解释。
mkdir Fe-spin
cp inputs/Fe-projected-spin/{INCAR,POSCAR,KPOINTS} Fe-spin/
# 添加匹配的Fe POTCAR后,通过Slurm提交
3. 区分charge与total#
module load py4vasp/0.11.3
python - <<'PYCODE'
import numpy as np
import py4vasp
c = py4vasp.Calculation.from_path('work/Fe-projected-spin')
m = c.local_moment.read()
print('投影轨道:', m['orbital_projection'])
print('投影电荷:', m['charge'])
print('自旋磁矩:', m['total'])
print('各原子球内自旋和:', m['total'].sum(axis=-1))
np.savetxt('Fe-spin-projection.csv', m['total'], delimiter=',')
PYCODE
非自旋计算也可能返回投影电荷;只有数组存在不能说明已经得到磁矩。本例total确有非零自旋投影,列为s、p、d,单位μB。
4. 为什么球内磁矩和晶胞总磁矩不完全相等#
两个Fe原子的球内结果近似相同:s约−0.020、p约−0.060、d约2.093 μB,各原子合计约2.013 μB。完整精度球内投影合计为 4.02540009 μB,晶胞全空间自旋磁矩为 4.0000 μB。

投影球和全空间积分的定义不同,不强行让二者相等;差值约−0.02540 μB也不直接等同于严格分区后的“间隙磁矩”,因为投影定义本身不是完整互斥的空间划分。比较不同构型时应保持PAW与投影方案一致。
cat results/data/Fe-atomic-spin.csv
cat tools-output/Fe-projected-spin-local_moment.txt
研究磁各向异性、轨道磁矩或非共线方向时,还需相应计算设置与数据字段;本例不能代替SOC结果。
将自己的输入提交到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和前置文件按正文自行提供;下列输入也在下载包中,不会由后处理脚本自动提交。
Fe-projected-spin#
INCAR(完整)
SYSTEM=Fe-projected-spin
ENCUT=550
PREC=Accurate
EDIFF=1E-6
EDIFFG=-0.02
IBRION=-1
NSW=0
ISIF=2
ISMEAR=0
SIGMA=0.05
LREAL=.FALSE.
LASPH=.TRUE.
LWAVE=.TRUE.
LCHARG=.TRUE.
NELM=160
ALGO=Normal
ISYM=0
ISPIN=2
MAGMOM=2.2 2.2
LORBIT=11
LELF=.FALSE.
NPAR=1
NBANDS=32
NEDOS=301
POSCAR(完整)
Fe
1.0000000000000000
2.8700000000000001 0.0000000000000000 0.0000000000000000
0.0000000000000000 2.8700000000000001 0.0000000000000000
0.0000000000000000 0.0000000000000000 2.8700000000000001
Fe
2
Direct
0.0000000000000000 0.0000000000000000 0.0000000000000000
0.5000000000000000 0.5000000000000000 0.5000000000000000
KPOINTS(完整)
Fe spinprojection electronic mesh
0
Gamma
4 4 4
0 0 0