GPAW磁性与SOC
bcc Fe铁磁、反铁磁初态与非自洽SOC本征值的实际操作。
阅读本篇目录
下载完整Python输入、原始结果、CSV和绘图脚本。以下短命令在解压目录、已分配的CPU资源中执行,输出写入 work/。本模块为CPU构建,加载GPU资源不会自动启用GPU计算。
1 准备自旋初态#
bash run.sh fe-fm
bash run.sh fe-afm
本例2原子bcc Fe常规胞,a=2.87 Å、PBE、PW250 eV、3×3×3网格、Fermi–Dirac展宽0.05 eV。两份结构相同,仅初始磁矩不同:
atoms.set_initial_magnetic_moments([2, 2]) # FM初态
# 另一目录用 [2, -2] 作为AFM初态
| 结果 | 原胞总能/eV | 原胞总磁矩/μB | 局域磁矩/μB |
|---|---|---|---|
| FM支路 | −17.61439185 | 4.43923 | 约+2.2482、+2.2482 |
| AFM支路 | −16.64313111 | 接近0 | 约+1.4221、−1.4221 |
本例的AFM支路确有相反局域磁矩;仅看总磁矩为0不能区分反铁磁和非磁。局域投影磁矩与全空间总磁矩也不必严格相加相同。
查看自己计算的最终磁矩:
python - <<'MAG'
from gpaw import GPAW
calc = GPAW('work/fe-afm/state.gpw', txt=None)
print(calc.get_magnetic_moments())
print(calc.get_magnetic_moment())
MAG
2 保存波函数,再做SOC#
bash run.sh soc
前提是FM目录已完成并保存 state.gpw。核心接口:
from gpaw import GPAW
from gpaw.spinorbit import soc_eigenstates
calc = GPAW('work/fe-fm/state.gpw', txt='restart.txt')
soc = soc_eigenstates(calc, theta=0)
energies = soc.eigenvalues()
本次全BZ输出形状27×48,比较theta=0°和90°两个自旋量子化方向。GPAW官方SOC说明将其定义为基于已收敛标量相对论态的非自洽SOC对角化。

3 单条本征值差不是磁晶各向异性能#
同一k点的能带会发生分裂、简并和顺序变化,按列相减不自动匹配同一轨道特征。本例图右只显示本征值变化;最大差约0.1057 eV,不把它报告为MAE。
磁晶各向异性需要一致占据、能量定义、充分k网格和相应精度,还应判断是否需要自洽SOC。这里的3×3×3网格仅供操作演示,不作为微小各向异性能的生产设置。
4 替换自己的磁性材料#
先选择有物理意义的初态和磁性超胞,分别检查SCF与最终局域磁矩,再比较能量。初始磁矩不是最终约束;SOC结果也应注明方向、能带截断和是否自洽。
需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。