

wannier90进行拟合并引入boltz方程计算纯镁热导率,但是得到的最后数据很不理想,300K下的数值在90左右,400K和500K则不断递增,投影轨道是s和p轨道,也尝试过增大kmesh和num_Iter都没有效果


晚上好🌙🌙🌙
本答案参考通义千问
你提到在使用 Wannier90 进行能带拟合,并结合 BoltzTraP2 计算纯镁的热导率时,得到的结果不理想:300 K 下热导率为 90 W/m·K,而随着温度升高(400 K、500 K)数值不断上升。这显然与实际材料行为不符,因为通常热导率随温度升高会下降(尤其是对于金属)。以下是一些可能的原因及解决方案,帮助你提升拟合精度和计算结果的合理性。
建议修改
wannier90.win文件中的num_wann和projections字段:
num_wann = 6 # 原来是 4(s + p)
projections = "Mg: s p d"
kmesh(例如 8x8x8 或更高),并适当增加 num_iter(如 1000)以确保收敛。--no-symmetry 选项避免对称性干扰。示例
wannier90.in修改:
kmesh = 8 8 8
num_iter = 1000
wannier90.out 中查看 Convergence 相关信息。RMS 值较高(如 > 0.1 eV),说明拟合不准确,需要调整初始猜测或重新运行。bands.dat 和 kpoints.dat 正确无误。bte.in 中的参数合理,如:
temperature 设置为 300, 400, 500 Kscattering 是否启用(若只关心电子热导率,可关闭)示例
bte.in修改:
&input
temperature = 300, 400, 500
scattering = .false.
...
/
scattering = .false. 并只输出电子相关参数。bte.in 中的 output 参数正确,如:
output = 'conductivity', 'thermal_conductivity'
提高 Wannier90 拟合精度
优化 BoltzTraP2 输入
验证材料热导率行为
wannier90.win)# wannier90.win
num_wann = 6
projections = "Mg: s p d"
spin_orbit = false
dis_num = 100
dis_order = 2
num_iter = 1000
kmesh = 8 8 8
你目前的问题很可能源于 Wannier90 拟合不准确 或 BoltzTraP2 参数设置错误。通过增加投影轨道、优化拟合参数、检查输入文件和热导率物理意义,可以显著提升计算精度。建议从 Wannier90 拟合开始逐步排查,再进行 BoltzTraP2 计算。
如果你愿意提供具体文件内容(如 wannier90.win, bands.dat, bte.in),我可以进一步帮你分析。