Wannier90轨道绘制与续算
从GaAs生成cube,并说明检查点转换、轨道振幅和矩阵输出精度。
阅读本篇目录
unzip wannier90-practical-wave256-*.zip
cd wannier90-wave256
bash run.sh
这一步读取已完成计算的真实数值,生成 analysis/ 和七张 figures/*.png,不启动DFT计算。要自己运行Wannier90,再按下面的命令操作。
1 先准备绘制轨道所需的UNK#
本页GaAs使用固定的官方4.0.3资料。矩阵已在附件中,8个UNK从官方固定版本下载,并逐个核对随包SHA;不需要重做DFT。
python3 fetch_unk.py
bash calculate.sh GaAs4-orbital
ls work/GaAs4-orbital-serial/*.cube
如果计算环境不能联网,可下载 官方4.0.3源码包,上传到当前目录后执行:
python3 fetch_unk.py --archive wannier90-4.0.3.tar.gz
bash calculate.sh GaAs4-orbital
脚本先校验整个源码包,再仅提取所需8个文件,不会解压执行上游安装程序。本例在集群使用这一离线方式完成实际计算。这些文件必须属于这份GaAs波函数;其他计算的UNK不能混用。
num_wann = 4
num_iter = 20
begin projections
As:sp3
end projections
wannier_plot = true
wannier_plot_list = 1
wannier_plot_format = cube
本例只输出第一个轨道的cube,实际网格 17³。原始UNK的网格与最终裁剪cube的网格不必相同;以生成文件头为准。
2 看轨道的正负振幅#
bash run.sh

红蓝表示波函数振幅的正负,图中用最大绝对值归一化显示。它不是正负电子密度;密度涉及模平方,还要处理占据和轨道叠加。实际cube使用非正交晶格网格,不能擅自当作三个彼此垂直的Cartesian轴。这个有限裁剪区域的振幅平方积分也不能直接解释成完整轨道的归一化或电子数。
用VESTA等工具打开原生 gaas_00001.cube 时,可以同时显示正负等值面,并查看晶胞/原子坐标。没有UNK时,不能只靠hr.dat重新画出同一实空间波函数。
3 从检查点续做后处理#
先在算完的Cu目录副本中操作。下面的 copper.chk由本次独立版自己产生:
module purge
module load wannier90/4.0.3-serial
w90chk2chk.x -export copper
cp copper.chk copper.chk.backup
w90chk2chk.x -import copper
格式转换用于文本交换和检查,不意味着任意历史版本的二进制文件都能直接加载。保留原chk,并同时保留win、eig以及后处理所需矩阵。
在win中写:
restart = plot
再运行 wannier90.x copper可从已有检查点重做绘图。它不会重新完成DFT,也不需要为改绘图网格而重新局域化;改变投影、带数或窗口则不能把绘图续算当作重新构造了模型。
4 hr.dat与tb.dat的输出精度#
write_hr = true
write_tb = true
4.0.3默认 hr.dat 的矩阵元写到小数点后六位。对于本套Si8,逐项舍入累积后,独立重建的训练点误差达到约 2×10⁻⁵ eV;模型本身的U矩阵重建仍很精确。原生 tb.dat 的哈密顿量部分保留更多有效数字,使用它重建后最大冻结态误差约 1.82×10⁻⁶ eV。
这说明在做精细插值误差或数值导数对照时,要同时检查文件精度。不要把原生hr.dat覆盖成自己生成的文件后再声称那是程序原输出。资料包保留原生两种接口,检查脚本使用较高精度的tb.dat。
5 串行与MPI怎样选#
小模型串行通常已经足够,MPI更适合矩阵较大或后处理网格较密的情况。本套七模型的展宽、能谱和相关输出做过串行/MPI对照;不同局域化过程可以给出等价但不逐元素相同的轨道规范。比较物理量、子空间和相同输入下的后处理结果,比直接要求每个复矩阵元素都相同更合理。