VASPBERRY专题

VASPBERRY:从WAVECAR读取原始自旋矩阵

用真实MoS₂ SOC波函数导出原始赝自旋与重叠矩阵,说明Pauli单位、基底声明与PAW补偿。

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

spin-matrix可以读取含SOC的WAVECAR,生成自旋Pauli矩阵与重叠矩阵,适合检查原始平面波部分。它没有补回PAW球内增广,因此本篇的导出是raw pseudo矩阵,不等于完整物理自旋算符,也不能直接交给物理PAW自旋霍尔接口。

本例复用本集群已有的3原子单层MoS₂ SOC计算:完整6×6×1网格、36点、48条旋量带,SAXIS=(0,0,1),VASP 6.6.1,PBE、ENCUT=450 eV、EDIFF=1E-6。这里只读已有WAVECAR,没有重做DFT。它和Bi的完整PAW自旋霍尔是两个不同体系与不同层次的例子。

下载输入、实际参考数据与脚本

下载后解压,进入资料目录:

unzip vaspberry-spin-wave663-*.zip
cd vaspberry-spin
bash results.sh
bash plot.sh

下载文件名带内容校验前缀,上面的通配符可直接匹配。reference-data/ 是已经实际计算的参考表,figures/reference.png 是重绘图;这两个读取与绘图命令不执行新的科学计算。

1. 放入自己的SOC波函数#

mkdir input
cp /自己的同次计算目录/WAVECAR input/
source env.sh

请把示例中文路径换成自己的路径。原始文件不在公开附件中。只有确认自己源计算的SAXIS后,才能声明自旋基底:WAVECAR本身没有记录SAXIS,不能指望读取器自动恢复任意旋转轴。

vaspberry-kubo spin-matrix --wavecar input/WAVECAR \
  --spin-basis 'Cartesian axes; source SAXIS=(0,0,1)' \
  --output-dir raw-spin

资料包raw-spin.sh封装了同一命令;较大波函数按job.slurm的普通用户CPU资源规则提交,将执行命令改成bash raw-spin.sh,不要在管理节点运行。若源SAXIS不同,需要先处理正确的自旋基底关联,不能只修改这段说明文字。

2. 读取输出数组#

python - <<'END'
import json
import numpy as np
m=json.load(open('raw-spin/spin.json'))
a=np.load('raw-spin/spin.npz')
print('scope:',m['operator_scope'])
print('full PAW:',m['physical_paw_validated'])
print('normalized:',m['normalization_applied'])
print('spin:',a['spin_pauli'].shape)
print('overlap:',a['overlap'].shape)
print('source bands:',a['band_indices'])
END

本例自旋数组为(36,3,48,48),重叠为(36,48,48);3个分量依次为x、y、z,矩阵索引是<n|σ|m>。Pauli算符无量纲,物理自旋的单位换算关系为S=ℏσ/2,但单位换算不会把缺少增广的赝算符变成完整PAW算符。

3. 原始重叠不是单位阵#

本例原始赝重叠与单位阵的最大差为0.3399832303。程序保留这一事实:operator_scope=raw_pseudo、physical_paw_validated=false、normalization_applied=false,不会把各态归一化后伪装成完整物理矩阵。下图及CSV都使用原始数据,没有除以赝范数。

真实MoS₂原始赝范数与自旋分量,保留未增广的重叠差异

reference-data/MoS2-raw-pseudo-spin.csv包含逐k点、逐带的能量、原始范数和自旋对角元。它可用于学习矩阵读取、检查自旋分量和后处理规范。要计算常规物理自旋霍尔,需要同一材料、同一波函数规范下完整且经过物理验证的PAW自旋及速度矩阵;不能把这个MoS₂赝矩阵和Bi的速度矩阵拼在一起。

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

查看配图

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

100%查看原图 ↗