py4vasp自旋纹理:从SOC计算到矢量图
用真实Fe单层小模型生成非共线SOC输出,再调用原生band.to_quiver并导出数据。
阅读本篇目录
本篇用一原子理想方格Fe单层,实际运行非共线SOC计算,再用py4vasp画面内自旋矢量。下载输入、读取副本和数据。这是固定几何的操作模型,没有作结构优化,不据此推导真实材料的Rashba参数或拓扑性质。
1 先读取本站实算数据#
mkdir py4vasp-spin
python3 -m zipfile -e py4vasp-spin-fields-*.zip py4vasp-spin
cd py4vasp-spin
bash run.sh
得到三组原生HTML图与CSV:倒空间自旋纹理、实空间磁密度和磁性势。sample中的两个HDF文件保留真实科学数组,移除了赝势组,只供读取;reference-plots和reference-tables是本站图与数据。
使用py4vasp0.11.3、Python3.11;实际计算为VASP6.6.1的P100 HDF5模块,NVHPC25.3与HDF5 1.14.6环境,1个GPU、1个MPI进程。
2 完整结构和k点#
POSCAR为:
Ideal square Fe monolayer;fixed model
1
2.86 0 0
0 2.86 0
0 0 15
Fe
1
Direct
0 0 0.5
KPOINTS为:
Regular 2D Gamma grid
0
Gamma
8 8 1
0 0 0
这里要的是二维均匀网格,不是高对称线模式。原生band.to_quiver需要一个倒格方向只有1层,另外两个方向形成规则二维网格。

3 关键INCAR#
ENCUT=500
PREC=Accurate
EDIFF=1E-6
ISMEAR=0
SIGMA=0.05
ISYM=-1
NSW=0
IBRION=-1
ALGO=Normal
NELM=160
NBANDS=16
LREAL=.FALSE.
LASPH=.TRUE.
ADDGRID=.TRUE.
LORBIT=11
LNONCOLLINEAR=.TRUE.
LSORBIT=.TRUE.
MAGMOM=2 2 0
LH5=.TRUE.
LWAVE=.FALSE.
LCHARG=.TRUE.
WRT_POTENTIAL=total hartree ionic xc
NEDOS=2001
完整文件在inputs/INCAR。本例显式开启非共线与SOC,初始磁矩有面内分量,LORBIT=11提供投影。没有额外设置ISPIN=2;非共线使用规则见VASP官方ISPIN说明。
如需自己重算,在登录节点执行:
sbatch run.slurm
squeue -u "$USER"
脚本将固定输入复制到新建fresh,申请P100-HS单卡资源并按分区规则计费;POTCAR从有权限的集群势库读取,不随包分发。完成后:
bash run.sh fresh
4 原生自旋矢量命令#
module load py4vasp/0.11.3
python - <<'PYCODE'
import py4vasp
c = py4vasp.Calculation.from_path('sample')
print(c.band.selections())
g = c.band.to_quiver('x~y(band=5)')
g.to_plotly().write_html('spin-texture.html', include_plotlyjs='cdn')
PYCODE
x~y选择面内两个自旋分量,band=5是从1开始的能带编号。图中b1、b2表示所选倒格平面方向;这是规则网格上的投影自旋矢量,不是把高对称路径能带连成箭头。

本例原生矢量数据为2×8×8,所选PAW投影分量最大绝对值约0.68698。它与全空间磁密度积分、PAW球内局域磁矩是不同的对象,比较数值前先确认定义。下一篇处理磁密度与磁性势。