Wannier90 输运数据与库接口:单位、画图和模型迁移
说明原版库调用顺序、有限展宽的实现约定,以及从小模型到材料所需的数据。
阅读本篇目录
下载完整模型、Fortran调用程序、参考数据和画图脚本,保存为example.zip:
python3 -m zipfile -e example.zip .
cd wannier-transport-examples
bash results.sh
bash plot.sh
采用独立wannier90/4.0.3-serial,Intel ifx2024.2、AVX2、MKL顺序库。这里是自己定义的一轨道紧束缚模型,在集群实际调用原版Wannier90输运库计算;没有把解析曲线冒充程序计算,也没有将这个模型称为材料DFT结果。所有任务单线程、无需GPU。
1. 先读取已有数据,不必重算#
head -n 5 lcr-clean.csv
bash plot.sh
CSV依次是能量、原生T、解析T、原生DOS、解析DOS;两份解析列用于说明本例模型,不参与原版程序求解。画图取原生列,数据与示意图不混用。
2. 有限展宽为什么要注明#
当前原生实现固定电极传递矩阵的虚部为0.0005eV。传递矩阵使用复能量,之后表面与中心Green函数的最终求逆使用实能量。本例按这一约定与独立解析链模型逐点比较,差别小于输出的小数精度。
这个约定与“所有Green函数都统一在E+iη计算”在有限η下存在差别,尤其靠近带边。体相链与LCR均匀链的中心DOS也会有小差异;不要据此宣称两个体系物理上不同,更不要只比较某个带边尖峰就判断材料性质。
能量范围−2.5到2.5eV,步长0.05eV,共101点。这个网格适合教学展示,不保证解析狭窄共振峰。换模型后应检查主层尺寸、耦合截断、能量网格和展宽影响。
3. 小型库调用程序做了什么#
cat transport_driver.f90
cat build.sh
核心调用顺序:
use w90_library
use w90_library_extra, only: input_reader_special
! data为lib_common_type,out和err为已打开的输出单元
call input_reader_special(data,trim(seed),out,err,ierr)
call w90_input_reader(data,out,err,ierr)
! 对外部HT分支显式设定本例使用的零能量参考
if(.not.allocated(data%fermi_energy_list)) allocate(data%fermi_energy_list(1))
data%fermi_energy_list=0.0d0
call w90_transport(data,out,err,ierr)
这段仅展示接口,完整程序含错误处理和输出文件打开/关闭。模块文件需要匹配编译器;配套脚本使用安装该库的ifx2024.2,不要用不同编译器直接读取其.mod文件。实际计算仍通过前文的Slurm脚本提交。
4. 从T到电导时不要多乘一次#
原生表格输出本例定义下的无量纲T,没有在脚本中另乘自旋倍数。转换电导需要先明确模型是否显式包含自旋、是否双重简并以及所用Landauer约定。不要看到单轨道就自动把所有结果乘2。DOS是中心区域或体相主层的态密度,不是单位体积DOS,也不是电极表面DOS。
5. 换成真实材料还缺什么#
需要先得到可靠且一致的Wannier模型,确定左右电极的主层和中心区域,匹配轨道顺序、能量零点、边界耦合与晶胞方向。普通*_hr.dat并不会自动给出完整器件的5份矩阵。自动2c2构造还需要对应超胞、波函数及分组信息,不能用本例外部矩阵流程代替。
这个例子没有自洽器件电势、有限偏压、非弹性散射或温度效应。若要画I–V,必须先说明电压分配、偏压下哈密顿量和积分窗口,不能只把零偏透射图换个横轴。