Wannier90 二阶移位电流:GaAs实际操作
输入矩阵、18个张量文件、相位约定比较和全占据对照。
阅读本篇目录
下载完整输入、参考数据和绘图程序,保存为example.zip:
python3 -m zipfile -e example.zip .
cd wannier-response-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. 从已有GaAs检查点开始#
本例使用官方固定GaAs模型,在集群运行5³教学积分网格。不是新的材料收敛光谱。
cat inputs/GaAs-shift-phase1/gaas.win
sbatch job.slurm GaAs-shift-phase1
sbatch job.slurm GaAs-shift-phase2
关键开关为:
berry = true
berry_task = sc
berry_kmesh = 5 5 5
kubo_freq_min = 0
kubo_freq_max = 10
kubo_freq_step = .5
sc_phase_conv = 1
sc_use_eta_corr = true
第二个例子只把sc_phase_conv改为2,并保留相同eta修正。其他展宽参数、能量单位与矩阵采用完整输入;比较约定时不要同时改变展宽或积分网格。
2. 读取张量并绘图#
ls reference-results/GaAs-shift-phase1/gaas-sc_*.dat
head -n 8 reference-results/GaAs-shift-phase1/gaas-sc_xyz.dat
bash plot.sh
原生写出18个独立分量文件,每个两列为光子能量eV、响应A/V²,0–10eV共21个频点。xyz后两个场指标使用程序的对称约定,画图前先明确张量分量和坐标轴,不把文件名直接当成实验样品方向。
两种相位约定在相同eta修正下,本例18个分量打印值一致。以xyz为例,0.5eV处约1.6803796×10⁻⁴A/V²,1eV处约2.0003464×10⁻⁶A/V²。图中乘10⁶显示µA/V²,坐标单位随之改变;不能只换标签不换数据。

这些小网格峰值没有做光谱收敛,不用于推荐GaAs器件响应。需要继续比较原始Wannier模型、积分网格、展宽和频率步长。
3. 检查占据条件#
sbatch job.slurm GaAs-shift-filled
head -n 8 reference-results/GaAs-shift-filled/gaas-sc_xyz.dat
把本有限模型的EF提高到100eV,所有保留带占据后,18个分量均为打印数值零。这说明占据差是工作流中的必要部分;它不证明粗网格光谱已经收敛。
与仅需能量的DOS不同,移位电流依赖波函数导出的矩阵与相位约定。不要只提供HR能量模型就假定所有非线性光学算符已经齐全。矩阵需求见官方Berry文档。