Wannier90专题

Wannier90 选择性局域化与中心约束

用同一套真实Si价带矩阵比较普通局域化、选择性局域化和中心约束。

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

下载完整输入、参考数据和绘图程序,保存为example.zip:

python3 -m zipfile -e example.zip .
cd wannier-controls-examples
bash results.sh
bash plot.sh

环境使用wannier90/4.0.3-serial,Intel ifx2024.2、AVX2、MKL顺序库;MPI构建使用Intel MPI2021.13。本文小例子用单线程即可。job.slurm申请CPU分区资源,再由run.py在新的work/算例名下运行。查看参考结果不需要重新计算;重复计算时换用新的解压目录。

1. 先准备同一套电子结构数据#

本例复用鸢算科技集群此前VASP6.6.1计算的两原子Si、4×4×4均匀k网格矩阵,保留4条价带与4个Wannier函数。改变的是Wannier优化目标,没有重算DFT。

先看输入和七种设置的结果:

cat inputs/guiding-centres/wannier90.win
cat wannier-controls.csv

win中有完整晶胞、原子位置、64个k点、投影与排除能带。num_wann=4表示4个目标函数,num_iter=300是本例统一迭代上限,不能代替您自己体系的收敛检查。

2. 普通局域化与选择一个目标函数#

普通例子使用投影、引导中心及全部4个函数的总展宽目标:

num_wann = 4
num_iter = 300
guiding_centres = true
num_guide_cycles = 1
num_no_guide_iter = 0

选择性例子增加:

slwf_num = 1

它只优先优化排序中的第1个函数,不会同时保证其余3个函数也更紧凑。投影顺序会影响您选中了谁。

sbatch job.slurm guiding-centres
sbatch job.slurm selective-one

Slurm执行的核心命令为:

wannier90.x -pp wannier90
wannier90.x wannier90

本包已配套amn/mmn/eig,所以可直接运行第二步。换成新材料时,-pp之后还要先用VASP、QE等接口生成相应矩阵,不能仅有win就得到电子结构。

3. 给所选中心加约束#

slwf_num = 1
slwf_constrain = true
slwf_lambda = 0.5
begin slwf_centres
1 .125 .125 -.375
end slwf_centres

中心位置使用晶格分数坐标。slwf_lambda调节中心约束项的权重,增加约束会改变优化问题;需要同时观察中心距离与展宽,不能只看总展宽。

sbatch job.slurm selective-centre
grep -A 8 'Final State' reference-results/selective-centre/wannier90.wout
设置 第1个函数展宽/Ų 4个函数总展宽/Ų
普通引导中心 1.6226332 6.4905342
只优化第1个函数 1.3125040 7.0740384
选择性并约束中心 1.3125040 7.0740381

选择性目标减小了第1个函数的展宽,同时增大了4个函数的总展宽。这是不同优化目标的结果,不能据此宣称某一种设置普遍更好。原始DFT网格上的价带本征值保持一致,输出HR六位小数带来的最大回算差约10⁻⁵eV。

选择性目标与总展宽的实际比较

4. 什么时候使用#

想围绕特定位点构造一个较紧凑的局域轨道时,可尝试选择性局域化;想得到全部目标函数的常规紧束缚模型时,先从普通MLWF流程开始。逐一检查投影、能窗、中心、展宽和插值能带,再决定采用哪种目标。本例固定300步,用于比较操作,不代表唯一规范或研究收敛结果。

方法参数见官方Wannier90参数说明。

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

查看配图

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

100%查看原图 ↗