ABACUS 专题

ABACUS 非共线磁性与SOC实操

真实Fe2方向旋转、全相对论赝势、SOC开关及四分量密度操作。

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

下载完整输入、原生日志、自旋密度及绘图脚本,解压进入附件根目录。先看已有结果:

bash analyze.sh

这一步仅用一个CPU核心处理参考数据,生成CSV及四张图,不启动DFT。需要完整重算时:

sbatch submit.slurm

脚本申请一张P100,按顺序完成12个条件;每个条件1个MPI进程、1个CPU线程,保留Slurm分配的GPU。参考实算为ABACUS3.10.1、双精度GPU,GNU13.3、HPC-X2.50/OpenMPI5.0.10rc2、CUDA12.8、OpenBLAS0.3.30;模块abacus/3.10.1-p100。未提供本批8173M或V100性能数据。不要在登录节点执行DFT。所有模型固定结构,scf_thr=1e-6,采用3×3×3网格;这些数值用于操作演示,不作为磁相图或收敛材料参数。

1. 把自旋方向从z转到x#

无SOC时,整体旋转所有自旋应保留能量;加入SOC后要使用包含自旋轨道信息的全相对论赝势。本例先用同一标量相对论Fe赝势检查无SOC旋转,再在同一个全相对论Fe赝势内比较SOC开关和方向。

最终原子磁矩方向与严格匹配赝势的能量对照

四幅箭头来自原生Mulliken矢量输出。本例是立方Fe,x和z为对称等价方向;它们的SOC能量接近相等应当被保留,不能把微小数值差当作有效磁各向异性。

2. 无SOC非共线完整输入#

展开完整 INPUT、STRU、KPT

INPUT#

INPUT_PARAMETERS
pseudo_dir ../../PP_ORB
orbital_dir ../../PP_ORB
suffix tutorial
calculation scf
ecutwfc 100
scf_thr 1e-6
scf_nmax 200
out_chg 1
smearing_method gaussian
smearing_sigma 0.015
mixing_type pulay
mixing_ndim 10
mixing_beta 0.1
ks_solver elpa
basis_type lcao
symmetry -1
nspin 4
out_mul true
device gpu
precision double
cal_force 0
cal_stress 0
noncolin 1
lspinorb 0
nbands 48

STRU#

ATOMIC_SPECIES
Fe 55.845 Fe_ONCV_PBE-1.0.upf

NUMERICAL_ORBITAL
Fe_gga_9au_100Ry_4s2p2d1f.orb

LATTICE_CONSTANT
1.889725989

LATTICE_VECTORS
    2.8328152400000000    0.0000000000000000    0.0000000000000000
    0.0000000000000000    2.8328152400000000    0.0000000000000000
    0.0000000000000000    0.0000000000000000    2.8328152400000000
ATOMIC_POSITIONS
Direct

Fe
1.0
2
0.0 0.0 0.0    mag 2 0 0
0.5 0.5 0.5    mag 2 0 0

KPT#

K_POINTS
0
Gamma
3 3 3 0 0 0

nspin 4使用旋量表示,noncolin 1打开非共线磁化,lspinorb 0关闭SOC。每个Fe的mag 2 0 0给初始笛卡尔磁矩矢量;z方向用mag 0 0 2。注意非共线中占据不再沿用nspin 1的自旋二重简并带计数,所以本例明确给48条旋量带。

3. 开启SOC时换成匹配的全相对论赝势#

完整SOC输入:

展开完整 INPUT、STRU、KPT

INPUT#

INPUT_PARAMETERS
pseudo_dir ../../PP_ORB
orbital_dir ../../PP_ORB
suffix tutorial
calculation scf
ecutwfc 100
scf_thr 1e-6
scf_nmax 200
out_chg 1
smearing_method gaussian
smearing_sigma 0.015
mixing_type pulay
mixing_ndim 10
mixing_beta 0.1
ks_solver elpa
basis_type lcao
symmetry -1
noncolin 1
nspin 4
lspinorb 1
out_mul true
device gpu
precision double
cal_force 0
cal_stress 0
nbands 48

STRU#

ATOMIC_SPECIES
Fe 55.845 Fe.upf

NUMERICAL_ORBITAL
Fe_gga_10au_100Ry_4s2p2d1f.orb

LATTICE_CONSTANT
1.889725989

LATTICE_VECTORS
    2.8328152400000000    0.0000000000000000    0.0000000000000000
    0.0000000000000000    2.8328152400000000    0.0000000000000000
    0.0000000000000000    0.0000000000000000    2.8328152400000000
ATOMIC_POSITIONS
Direct

Fe
1.0
2
0.0 0.0 0.0    mag 0 0 2
0.5 0.5 0.5    mag 0 0 2

KPT#

K_POINTS
0
Gamma
3 3 3 0 0 0

这里使用Fe.upf及对应Fe数值轨道,lspinorb 1、noncolin 1。该赝势原生头部为relativistic="full"、含SOC信息;普通Fe_ONCV_PBE-1.0.upf是标量相对论,不能只改lspinorb就当作正确SOC输入。

对照fe-full-nosoc-z保持同一个全相对论赝势与轨道,只关SOC。不要把约−6440 eV的标量赝势结果与约−6820 eV的另一套赝势直接相减,称为SOC能量。

4. 实际结果与终端提取#

grep 'Total Magnetism on atom' work/cases/fe-nc-x/OUT.tutorial/mulliken.txt
grep 'Total Magnetism on atom' work/cases/fe-nc-z/OUT.tutorial/mulliken.txt
对照 实际能量差,eV/双原子晶胞 含义
无SOC,x−z -1.692e-10 整体自旋旋转数值一致
同一全相对论赝势,SOC x−z -9.732e-10 立方等价方向,不是非零各向异性
同一全相对论赝势,SOC开−关 -0.141147 固定粗网格下SOC开关对照
python - <<'PY'
import csv
with open('reference/analysis/conditions.csv') as f:
    for r in csv.DictReader(f):
        if r['name'].startswith('fe-nc') or r['name'].startswith('fe-soc'):
            print(r['name'],r['Mx'],r['My'],r['Mz'],r['E_eV'])
PY

非共线SPIN1_CHG.cube是总电荷,SPIN2/3/4_CHG.cube对应磁化x/y/z分量;不能按共线两自旋格式相加。附件独立积分各分量,与日志矢量磁矩核对。

所有坐标、原子位置保持固定,这里没有用SOC优化结构、输出原子力或得到收敛磁各向异性。不同赝势、基组、k点、展宽或未固定最终方向的能量差不能直接解释成磁各向异性能。设置原理见官方自旋/SOC指南。

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

查看配图

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

100%查看原图 ↗