ABACUS 专题

ABACUS 磁交换参数实操

从实际Fe2铁磁自洽、H/S矩阵到TB2J交换参数和轨道分解。

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

下载Fe2完整输入、原生矩阵、7组TB2J结果、自旋波与离线依赖。解压进入附件根目录,先看已有结果:

bash analyze.sh

首次运行会创建本目录的 venv,使用已固定的离线依赖,不修改公共环境。4张高清图在 reference/figures,数据和表在 reference/analysis。如果希望从DFT开始完整复跑,在新解压目录提交:

sbatch submit.slurm

模板依次完成2个Fe2铁磁SCF、7个交换参数条件、自旋波、数据提取与画图。新的输出在 work;已有 work 时请新解压。DFT使用ABACUS3.10.1-p100、GNU13.3/HPC-X2.50(OpenMPI5.0.10rc2)/CUDA12.8/ELPA GPU,1进程、1线程、GPU双精度。不要在登录节点直接运行DFT。

后处理为TB2J0.9.22、HamiltonIO0.3.8、Python3.11、sisl0.16.4、SciPy1.16.3及NumPy2.3.5环境,1个CPU进程/线程;它不等于ABACUS的GPU加速性能测试。两阶段按脚本切换环境,避免混用依赖。

1 先有合适的磁性基态#

本例是晶格约2.8328 Å的BCC铁常规晶胞,含2个Fe,固定晶胞与位置。采用共线铁磁参考态、PBE赝势和数值原子轨道,每个Fe27个NAO,共54维。输入 mag 2 只是初始猜测,不等于最终磁矩;要检查SCF收敛及最终磁态。

实际Fe结构与两套交换参数对照

实际INPUT如下:

cat inputs/fe-fm-k5/INPUT
INPUT_PARAMETERS
pseudo_dir ../../PP_ORB
orbital_dir ../../PP_ORB
suffix tutorial
calculation scf
ecutwfc 100
scf_thr 1e-8
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 2
out_mul true
device gpu
precision double
cal_force 0
cal_stress 0
nbands 32
out_mat_hs2 1
out_mat_r 1

交换接口关键是 nspin 2 和 out_mat_hs2 1,输出两个自旋通道的H(R)及共用S(R)。本例还保留r矩阵,共线J的这一步不要求r矩阵。scf_thr 1e-8用于提高自洽精度,Gaussian宽度0.015 Ry是DFT电子占据设置,与后面TB2J的电子展宽不同。

完整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.5 0.5 0.5    mag 2

实际KPT:

K_POINTS
0
Gamma
5 5 5 0 0 0

另一个条件使用3³电子k网格,其他输入相同。它们是两个采样控制,不是两种不同的铁材料。质量、真实Fe赝势和轨道文件均随附件保持配套。

2 先检查SCF,再把矩阵交给TB2J#

完整模板会自动衔接。希望手动分步时,在已分配资源中运行下列命令;它与整套模板二选一:

bash prepare-env.sh
module load abacus/3.10.1-p100
python3 -B setup.py
python3 -B run_all_scf.py

检查主要目录:

ls work/cases/fe-fm-k5/OUT.tutorial/data-*sparse*.csr
grep 'charge density convergence is achieved' work/cases/fe-fm-k5/OUT.tutorial/running_scf.log

应有 data-HR-sparse_SPIN0.csr、data-HR-sparse_SPIN1.csr 和 data-SR-sparse_SPIN0.csr。H原生单位Ry,TB2J接口转换为eV;不能把一个自旋通道漏掉,或把不同SCF的H与S配在一起。

3 运行交换参数计算#

附件把经过实跑的条件放在 EXCHANGE-CASES.json,使用短命令执行:

mkdir work/exchange
venv/bin/python -B run_exchange.py

这个脚本调用原生 abacus2J.py:指定SCF目录、后缀tutorial、磁性元素Fe、插值网格、CFR阶数和4 Å距离范围。前置DFT须全部成功,不能在尚未完成时启动后处理。自动模板已经包含这一步,手动命令不要重复覆盖已有目录。

读取已有的主要结果:

head -n 60 reference/exchange/scf5-tb7-nz80/exchange.out

exchange.out的J单位meV,列出原子对、晶格平移R、向量和距离。4 Å范围在这个BCC模型中包含每个Fe的8个最近邻与6个次近邻,文件保留两个方向,共28条有向相互作用。

在TB2J官方约定中,交换项带负号,正J偏好铁磁对齐,每对的ij和ji均计入。不要把同一个J表直接放进含1/2或反号的另一套哈密顿量而不转换。TB2J.pickle内部能量用eV,不能把它与文本的meV混为一谈。

4 查看轨道分解和导出#

实际轨道贡献与独立格林函数比较

本图把原生角动量分解汇总成s、p、d、f四组,保留正负贡献,求和仍对应同一对Fe的J。它依赖所选基组和分组方式,不是唯一的成键能分解。

原生还生成 Vampire、ESPInS、Multibinit 等目录,可继续准备对应自旋程序的输入;这些导出文件不等于已经完成后续自旋动力学。接口说明可对照TB2J官方ABACUS教程,但实际默认积分和选带规则以本附件0.9.22为准。

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

查看配图

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

100%查看原图 ↗