VASP 专题

VASP与Wannier90计算磁性光学电导

用Fe展示复光学电导的对称与反对称分量,区分响应张量和Kerr旋转角。

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

磁性材料的光学响应不只有吸收谱。复光学电导张量可分成对称和反对称部分;后者与磁光响应有关。这篇先演示怎样得到这些分量,不直接把它们称作Kerr或Faraday旋转角。

示例体系与软件#

本例使用鸢算科技集群实际计算的bcc Fe:单原子原胞,固定晶格常数2.87 Å,PBE PAW Fe,ENCUT=550 eV,EDIFF=1E-6,8³Gamma网格,32条自旋子能带。开启SOC与非共线自旋,初始磁矩沿z,未添加磁矩方向约束;这是固定结构的电子响应计算,不是结构优化。

VASP为6.6.1-v100-wannier90,使用NVHPC 25.3/CUDA 12.8;Wannier90/postw90为独立4.0.3,使用Intel oneAPI 2024.2 ifx编译。VASP部分使用V100,Wannier后处理使用CPU。

每个Fe投影s、p、d轨道,计入自旋后共18个Wannier轨道。冻结窗口上限为费米能以上5 eV,外窗口为费米能以上40 eV;设置guiding_centres=true,解纠缠和局域化各最多2000次迭代。独立路径DFT与插值在费米能−8至+2 eV范围内,RMSE为0.0440 eV,最大误差0.1142 eV。这个对照用于判断电子结构插值是否适合本例的低能响应,不能替代响应积分的收敛检查。

工作流:先准备波函数,再计算响应#

下载附件,在两个DFT目录中准备合法Fe POTCAR,回到根目录提交:

sbatch run.sh

脚本依次完成:

  1. fe-spinor:自洽SOC计算,保存CHGCAR及Wannier接口文件。
  2. 建立18轨道Wannier模型,生成插值所需的检查点。
  3. fe-band-check:用本次CHGCAR直接计算高对称路径,对照插值能带。
  4. 在20³和40³积分网格分别计算反常霍尔电导和复光学电导。
  5. 计算结束后运行附件中的extract_response.py,获得FE-RESPONSE-DATA.json。
module load ase/3.29.0
python extract_response.py

8³网格决定原始DFT波函数的采样;20³、40³是插值之后的布里渊区积分网格。加密后者不会自动弥补原始波函数网格或Wannier子空间的问题。保留自己的原始接口文件;只有HR文件不足以复现这里的全部响应。

计算频率相关电导#

berry = true
berry_task = kubo
berry_kmesh = 40 40 40
fermi_energy = 5.3774878
kubo_freq_min = 0.0
kubo_freq_max = 2.0
kubo_freq_step = 0.05
kubo_adpt_smr = false
kubo_smr_fixed_en_width = 0.1

光子能量从0至2 eV,步长0.05 eV,固定展宽0.1 eV。这是选定近似下的独立粒子带间响应;不要把零频输出当成已包含实际载流子散射和Drude输运的直流电导。

输出文件:

文件示例 内容
wannier90-kubo_S_xx.dat 对称部分xx分量
wannier90-kubo_A_xy.dat 反对称部分xy分量
wannier90-jdos.dat 联合态密度

电导文件三列依次是光子能量(eV)、实部和虚部(S/cm)。S表示σS_ab=(σab+σba)/2,A表示σA_ab=(σab−σba)/2;A不是安培单位。若某一非对角对称项不为零,完整σab需要把对应S和A合起来,不能只读取A文件。

Fe复光学电导

20³与40³网格的Re σS_xx在0–2 eV区间最大差为1445.594 S/cm。图中同时画出两种网格,不把本例当成充分收敛的实验拟合。更换展宽也会改变峰形,需要单独检查。

怎样进一步得到磁光旋转#

Kerr与Faraday角还需要光入射方向、磁化方向、介质或薄膜几何、厚度,以及一致单位下的完整复介电/电导张量。先明确采用体材料、薄膜还是多层光学模型,再计算边界条件;不能将σA_xy的实部直接标成“旋转角”。

本例没有加入激子、多体寿命、温度磁涨落或器件层结构。若关心更高能光谱,应扩大经过验证的Wannier能量范围与空带数,而不是只改kubo_freq_max。

跟着输入文件操作#

下载本页附件后,先解压到单独目录。下面的目录名与附件一致。

unzip vasp-properties-batch31-*.zip -d vasp-example-31
cd vasp-example-31
cat README.txt

以下展开的是 calculations/fe-spinor 这一步的真实示例输入。多结构扫描、位移法和多阶段响应仍按正文顺序准备全部任务;改变材料时,结构、元素顺序和方法参数要一起修改。

cd calculations/fe-spinor
ls INCAR POSCAR KPOINTS
nano INCAR
INCAR:展开查看完整示例
SYSTEM = bccFe spinor Wannier response
ENCUT = 550
PREC = Accurate
EDIFF = 1E-6
IBRION = -1
NSW = 0
ISMEAR = 0
SIGMA = 0.05
LREAL = .FALSE.
LASPH = .TRUE.
ISYM = -1
LSORBIT = .TRUE.
LNONCOLLINEAR = .TRUE.
MAGMOM = 0 0 2.5
LORBIT = 11
LORBMOM = .TRUE.
NELM = 160
ALGO = Normal
NBANDS = 32
NUM_WANN = 18
LWANNIER90 = .TRUE.
LWRITE_SPN = .TRUE.
LWAVE = .TRUE.
LCHARG = .TRUE.
POSCAR:展开查看完整示例
Fe
 1.0000000000000000
    -1.4350000000000001    1.4350000000000001    1.4350000000000001
     1.4350000000000001   -1.4350000000000001    1.4350000000000001
     1.4350000000000001    1.4350000000000001   -1.4350000000000001
 Fe 
   1
Direct
 -0.0000000000000000  0.0000000000000000  0.0000000000000000
KPOINTS:展开查看完整示例
Gamma mesh
0
Gamma
8 8 8
0 0 0

关键参数对照:

参数 本例值 使用时注意
IBRION -1 决定离子处理方式:−1为静态,0为分子动力学,2常用于优化;5/6等有限位移任务见正文。
LORBIT 11 控制原子/轨道投影输出;投影能带和PDOS需要相应的PROCAR或DOSCAR内容。
LSORBIT .TRUE. 设为.TRUE.时开启自旋轨道耦合,使用匹配的vasp_ncl程序并保持磁化方向和坐标定义一致。
NBANDS 32 控制计算能带数;光谱、响应和Wannier窗口通常需要额外空带。
LWANNIER90 .TRUE. 设为.TRUE.时输出Wannier接口;后续仍需独立运行Wannier90并检查插值。
LCHARG .TRUE. 控制是否写出CHGCAR;后续固定密度计算需要前一步保存该文件。
EDIFF 1E-6 电子自洽收敛阈值,单位eV;本组通常为1E−6。

POSCAR的元素顺序决定POTCAR拼接顺序。Direct表示分数坐标,Cartesian表示笛卡尔坐标;有Selective dynamics时,F/T还限制相应原子的移动。KPOINTS第二行为0通常使用自动网格;显式列表、Line-mode路径和均匀网格用途不同,不能互换来做同一种积分。

这个输入由附件根目录的总脚本组织。按正文为各阶段准备POTCAR后,返回附件根目录提交整个流程:

cd ../..
sbatch run.sh
squeue -u "$USER"
run.sh:整个流程的执行顺序
#!/bin/bash
#SBATCH --job-name=fe-response
#SBATCH --partition=gpu-8v100-16g-hs
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --gres=gpu:v100-16g:1
#SBATCH --time=04:00:00
#SBATCH --output=fe-response-%j.log
set -eo pipefail
source /etc/profile
study_dir="$SLURM_SUBMIT_DIR"
export OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 OMPI_MCA_coll_hcoll_enable=0 NO_STOP_MESSAGE=1
ulimit -s unlimited
module purge
module load vasp/6.6.1-v100-wannier90
cd "$study_dir/calculations/fe-spinor"
mpirun --bind-to none -np 1 vasp_ncl > stdout.log 2>&1
module purge
module load ase/3.29.0
python "$study_dir/prepare_wannier.py"
module purge
module load wannier90/4.0.3-serial
wannier90.x wannier90 > wannier.stdout 2>&1
module purge
module load ase/3.29.0
python "$study_dir/prepare_bandcheck.py"
cd "$study_dir/calculations/fe-band-check"
module purge
module load vasp/6.6.1-v100
mpirun --bind-to none -np 1 vasp_ncl > stdout.log 2>&1
module purge
module load ase/3.29.0
python "$study_dir/check_bands.py"
python "$study_dir/prepare_response.py"
module purge
module load wannier90/4.0.3-serial
for name in ahc20 ahc40 kubo20 kubo40; do
cd "$study_dir/calculations/$name"
postw90.x wannier90 > post.stdout 2>&1
grep -q 'All done: postw90 exiting' wannier90.wpout
done

作业结束后,在实际VASP输出目录查看最后几步:

tail -n 12 OSZICAR
grep "EDIFF is reached" OUTCAR | tail -n 3
grep "reached required accuracy" OUTCAR
ls -lh CONTCAR

静态计算不要求出现离子优化完成提示;优化任务还要检查最终自由原子力。性质专用输出和后处理仍按正文执行。附件中的参考图与RESULTS文件不会随着你的新任务自动更新。

需要选择后处理软件时,可对照实算教程中的辅助工具表。

下载与参考#

下载输入、运行脚本、提取程序、结果与图片

反常霍尔教程 · Wannier90 Fe响应教程 · postw90输出说明

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

查看配图

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

100%查看原图 ↗