VASPBERRY轨道与自旋投影实操
复用真实bccFe的512k点SOC输出,按d、sp和全部原子组提取原始投影,并处理单原子PROCAR打印格式。
阅读本篇目录
VASPBERRY配套的procar_character.py可把同次计算的PROCAR、WAVECAR、OUTCAR整理为可读取的轨道和自旋投影。本篇复用鸢算科技已有bcc Fe计算:1原子原胞、8³完整网格、32条自旋子能带,PBE、ENCUT550eV、EDIFF1E-6、SOC,初始磁矩沿z。没有新增DFT计算。
1 下载与参考数据#
下载Fe投影实例包,保存为Fe-character.zip。
python3 -m zipfile -e Fe-character.zip .
cd vaspberry-Fe-character
bash results.sh
bash plot.sh
VASP源程序为6.6.1、NVHPC25.3/CUDA12.8环境;投影工具固定VASPBERRY1.6.3、Python3.11。附件有实际INCAR/POSCAR、全部导出的数值、分组和脚本,不分发波函数或赝势。

图左为方便观察而生成的显示超胞,实际DFT采用单原子原胞;图右取自真实全部能带结果,并非沿高对称路径的能带图。
2 分组与输入文件#
cat INCAR
cat groups.json
{"groups": [
{"name": "Fe_d", "ions": [1],
"orbitals": ["dxy", "dyz", "dz2", "dxz", "x2-y2"]},
{"name": "Fe_sp", "ions": [1],
"orbitals": ["s", "py", "pz", "px"]},
{"name": "Fe_total", "ions": [1]}
]}
原子编号从1开始,轨道名严格按PROCAR头部写,不自动把d展开成5个轨道。Fe_total直接读取打印的总投影;Fe_d与Fe_sp分别对对应列求和。重叠原子/轨道分组可以使用,但它们不构成可直接相加的划分。
3 处理自己的同次输出#
把匹配的WAVECAR、PROCAR、OUTCAR放在input/:
bash prepare.sh ./input
sbatch job.slurm
本例要求静态NSW=0、ISPIN=1、非共线SOC、LORBIT=11,三个文件必须来自同次计算。工具会核对k点、能量、占据、晶格和SAXIS旋转;不能把较早SCF的OUTCAR与新波函数拼在一起。
单原子Fe的原始PROCAR每个q/m块只有原子1行,未单独打印tot行。此安装版读取器需要显式总计行,附件因此执行:
source env.sh
python single_ion_procar.py
它生成派生格式文件source/PROCAR.single-ion-compatible:每个单原子块补一行与原子1完全相同的总计,原始65536行投影数值不改动,原始PROCAR也保留。来源和哈希写入PROCAR-FORMAT-DERIVATION.json。这只针对该单原子打印变体;已经有tot行或多原子PROCAR不要套此转换。
4 提取与读取#
完整作业已执行格式转换和z/x两个分析轴。分步运行时,在尚未产生相应输出的新例子目录中使用:
python project.py z
python project.py x
ls character-z
得到character.csv/npz/json,包含512×32个状态、3组、4种投影分量。实际DFT使用3D网格,所以本例用于原始投影,不把这512点硬改成二维Hall积分网格。