Wannier90专题

Wannier90的SOC与自旋DOS

运行Fe自旋量子态实例,操作自旋矩阵格式并读取磁矩和投影态密度。

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

下载七模型输入、数值与绘图脚本(ZIP)。

unzip wannier90-practical-wave256-*.zip
cd wannier90-wave256
bash run.sh

这一步读取已完成计算的真实数值,生成 analysis/ 和七张 figures/*.png,不启动DFT计算。要自己运行Wannier90,再按下面的命令操作。

1 SOC输入不能简单把轨道数再乘两遍#

本例使用官方4.0.3的Fe SOC数值矩阵:28条输入带、18个Wannier轨道、2³均匀k网格。下面实际运行的是Wannier90及postw90;这份粗网格不用于给出收敛的铁磁矩。

cat inputs/Fe18-spinor/Fe.win
bash calculate.sh Fe18-spinor
num_bands = 28
num_wann = 18
spinors = true

dis_win_min = -8.0
dis_win_max = 70.0
dis_froz_min = -8.0
dis_froz_max = 30.0

begin projections
Fe: sp3d2;dxy;dxz;dyz
end projections

spinors=true表示自旋量子态。投影与自旋分量的组合必须和接口矩阵一致,不能拿非SOC矩阵只加这一行就变成SOC。该模型总展宽约 8.51589018 Ų。

2 计算自旋投影DOS和磁矩#

bash post.sh Fe18-spinor
cat work/Fe18-spinor-serial-post/Fe.wpout

关键后处理输入在 inputs/Fe18-spinor/Fe.post.win:

fermi_energy = 12.6279
spin_moment = true
kmesh = 4
dos = true
spin_decomp = true
dos_energy_min = 10.0
dos_energy_max = 13.0
dos_energy_step = 0.2
spn_formatted = true

这里还需要与波函数基底一致的 Fe.spn 自旋矩阵。只有amn、mmn和eig并不自动具备自旋算符矩阵。复制别的计算的spn可能维度相同却基底不匹配,不能这样拼接。

head work/Fe18-spinor-serial-post/Fe-dos.dat
rg -A 8 'Spin magnetic moment' work/Fe18-spinor-serial-post/Fe.wpout

原生自旋DOS包含能量、总DOS、上自旋投影、下自旋投影;上、下分量之和对应总量。绘图时把下自旋画成负值只是显示习惯,原始态密度不是负数。

Fe实际自旋DOS与磁矩分量

这份数据输出约 Mx=-0.000003、My≈0、Mz=3.090787 μB/cell。横向分量接近零时,方位角对极小数值波动敏感;比较串行/MPI时优先比较磁矩分量,而不是只看方位角末几位。

3 spn文本/二进制转换#

先在单独副本操作,保留源文件:

module load wannier90/4.0.3-serial
mkdir spin-convert
cp inputs/Fe18-spinor/Fe.spn spin-convert/Fe.spn.fmt
cd spin-convert
w90spn2spn.x -import Fe
w90spn2spn.x -export Fe

-import从 .spn.fmt生成二进制 .spn,-export反向生成文本。后处理时,文本spn对应 spn_formatted=true,二进制对应false,文件格式和开关要一起匹配。本套在集群实际做过两种格式的数值回读与磁矩对照。

4 下一步做Berry或光学响应前#

本页完成的是自旋矩阵、自旋DOS和自旋磁矩的操作。Berry曲率、反常Hall、光学、轨道磁化等还需各自参数与矩阵、k网格和展宽收敛;不能因为 spinors=true 就认定这些响应已经算完。

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

查看配图

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

100%查看原图 ↗