2401_82789975 2026-01-07 21:09 采纳率: 0%
浏览 3

wannier90拟合精度提升

img

img


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

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2026-01-07 21:40
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你提到在使用 Wannier90 进行能带拟合,并结合 BoltzTraP2 计算纯镁的热导率时,得到的结果不理想:300 K 下热导率为 90 W/m·K,而随着温度升高(400 K、500 K)数值不断上升。这显然与实际材料行为不符,因为通常热导率随温度升高会下降(尤其是对于金属)。以下是一些可能的原因及解决方案,帮助你提升拟合精度和计算结果的合理性。


    一、问题分析

    1. Wannier90 拟合精度不足

    • Wannier90 的拟合质量直接影响后续 BoltzTraP2 的计算结果。
    • 你的拟合中使用了 s 和 p 轨道,但可能这些轨道无法准确描述电子结构(特别是对于镁这种轻金属)。
    • KMESH 设置不当迭代次数不够,可能导致拟合不收敛或误差较大。

    2. BoltzTraP2 输入参数设置不合理

    • 热导率计算对能带结构非常敏感,若拟合能带不准确,会导致热导率异常。
    • 可能没有正确设置 电导率、塞贝克系数等参数,或者未考虑 声子散射机制(BoltzTraP2 主要用于电子热导率,需注意是否混淆了电子与声子贡献)。

    3. 材料特性理解有误

    • 镁是 金属,其热导率主要由电子贡献,且通常随温度升高而降低。
    • 如果你在 300–500 K 下得到热导率不断上升,说明可能出现了 数据错误或模型设定错误

    二、解决方案

    1. 提高 Wannier90 拟合精度

    增加投影轨道数量

    • 仅使用 s 和 p 轨道可能不足以描述镁的电子结构。
    • 增加 d 轨道 或其他轨道,尤其对于过渡金属或具有复杂电子结构的材料更为重要。

    建议修改 wannier90.win 文件中的 num_wannprojections 字段:

    num_wann = 6   # 原来是 4(s + p)
    projections = "Mg: s p d"
    

    优化 KMESH 和 NUM_ITER

    • 尝试更大的 kmesh(例如 8x8x8 或更高),并适当增加 num_iter(如 1000)以确保收敛。
    • 使用 --no-symmetry 选项避免对称性干扰。

    示例 wannier90.in 修改:

    kmesh = 8 8 8
    num_iter = 1000
    

    检查 Wannier 函数的收敛性

    • wannier90.out 中查看 Convergence 相关信息。
    • RMS 值较高(如 > 0.1 eV),说明拟合不准确,需要调整初始猜测或重新运行。

    2. 修正 BoltzTraP2 输入文件

    确认输入文件的准确性

    • 确保 bands.datkpoints.dat 正确无误。
    • 确认 bte.in 中的参数合理,如:
      • temperature 设置为 300, 400, 500 K
      • scattering 是否启用(若只关心电子热导率,可关闭)

    示例 bte.in 修改:

    &input
        temperature = 300, 400, 500
        scattering = .false.
        ...
    /
    

    输出热导率时注意单位和物理含义

    • BoltzTraP2 默认输出的是 电子热导率,需注意是否混入了 声子热导率
    • 若你只关心电子部分,应确保 scattering = .false. 并只输出电子相关参数。

    3. 检查材料本身的热导率行为

    确认镁的热导率理论值

    • 纯镁的热导率在室温下约为 150 W/m·K 左右,随温度升高会略有下降。
    • 若你的计算值远低于此,可能是拟合误差或输入参数设置错误。

    检查是否混淆了电导率和热导率

    • 确保 bte.in 中的 output 参数正确,如:
      output = 'conductivity', 'thermal_conductivity'
      

    三、推荐步骤总结

    1. 提高 Wannier90 拟合精度

      • 增加投影轨道(如加入 d 轨道)
      • 增大 kmesh 和 num_iter
      • 检查收敛性,确保 RMS < 0.1 eV
    2. 优化 BoltzTraP2 输入

      • 确保输入文件格式正确
      • 设置合理的温度范围和散射参数
      • 输出热导率时注意单位和物理意义
    3. 验证材料热导率行为

      • 对比理论值和实验值
      • 确认是否混淆了电子与声子热导率

    四、代码示例(修改后的 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),我可以进一步帮你分析。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月7日