AMSET专题

AMSET:怎样检查插值网格收敛

保持同一GaAs散射模型,从47³到125³网格实算对照总迁移率及四项分项变化,避免把程序结束当成收敛。

更新于 2026-11-05约 4 分钟阅读按任务与环境选择适用配置
阅读本篇目录

AMSET运行成功后,还要检查网格改变是否影响目标性质。本文延续GaAs四机制散射教程,使用同一电子数据和参数,只把插值因子从5/10/20继续增加到50/100。

环境为AMSET 0.5.1、BoltzTraP2 26.3.1;每个条件一个CPU线程。电子数据来自官方GaAs示例,参数来源见前文,本文没有新计算DFT。温度300/600 K、电子浓度10^17 cm^-3,ADP/IMP/PIE/POP四机制同时开启。

1. 准备输入与设置#

先下载加密网格资料包,在新目录解压。inputs/为同一官方电子数据,BASE-SETTINGS.json保存全部材料参数,baseline/为此前实际计算的5/10/20结果。

module load amset/0.5.1
python prepare.py
cat cases/all4-f50/settings.yaml

完整基础设置如下,因子100目录仅将interpolation_factor改为100:

doping:
- -1.0e+17
temperatures:
- 300
- 600
bandgap: 1.33
scattering_type:
- ADP
- IMP
- PIE
- POP
interpolation_factor: 50
deformation_potential:
- 1.2
- 8.6
elastic_constant:
- - 118.77
  - 53.72
  - 53.72
  - 0
  - 0
  - 0
- - 53.72
  - 118.77
  - 53.72
  - 0
  - 0
  - 0
- - 53.72
  - 53.72
  - 118.77
  - 0
  - 0
  - 0
- - 0
  - 0
  - 0
  - 59.44
  - 0
  - 0
- - 0
  - 0
  - 0
  - 0
  - 59.44
  - 0
- - 0
  - 0
  - 0
  - 0
  - 0
  - 59.44
high_frequency_dielectric: 10.32
pop_frequency: 8.16
static_dielectric: 12.18
mobility_rates_only: false
write_mesh: true
nworkers: 1
separate_mobility: true
print_log: true
write_input: true
piezoelectric_constant:
- - 0
  - 0
  - 0
  - -0.16
  - 0
  - 0
- - 0
  - 0
  - 0
  - 0
  - -0.16
  - 0
- - 0
  - 0
  - 0
  - 0
  - 0
  - -0.16

interpolation_factor决定插值目标密度,不是每个方向直接取50或100个点;实际离散网格由程序生成。本例因子50得到99³、因子100得到125³。

2. 运行两个条件#

export OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 NUMBA_NUM_THREADS=1
cd cases/all4-f50
amset run
cd ../all4-f100
amset run
cd ../..

上面是顺序执行;包内bash run.sh会最多并发两个单线程条件,继续分析和画图。生产计算请按作业管理申请适当CPU资源,线程数与作业分配保持一致。请在新目录重跑,避免覆盖此前结果。

3. 提取迁移率并看相邻变化#

python analyze.py
cat analysis/mobilities.csv
cat analysis/convergence.csv

实际总迁移率如下,单位均为cm²·V⁻¹·s⁻¹:

因子 实际网格 300 K总迁移率 600 K总迁移率
5 47x47x47 9488.31 4263.97
10 59x59x59 8260.67 3691.15
20 73x73x73 7150.21 3394.14
50 99x99x99 6014.82 3115.56
100 125x125x125 5442.12 2988.85

同一GaAs模型五种实际网格的总迁移率与四项分项迁移率

相邻变化按 abs(较粗−较密)/abs(较密) 计算,分别检查300/600 K和三个对角分量。原定条件是:总迁移率与四项分项都小于5%。50→100的最大变化仍约 22.86%,主要来自POP分项,因此不能据此宣称收敛;只看到某一分项较稳定也不足以支持总结果。

各相邻网格的最大对角变化;虚线为保持不变的5%参考线

4. 用AMSET原生命令画对照#

bash plot-native.sh
ls native-plots/*.png

脚本实际执行以下原生命令,并将PNG写入native-plots/:

amset plot convergence cases/all4-f50/transport*.json cases/all4-f100/transport*.json \
  -x temperature -d '0' --format png --no-base-style --directory native-plots

当前Matplotlib版本下,先用包内脚本加载仅对绘图进程生效的兼容文件;软件安装和输运计算没有改动。

研究计算需要同时检查初始DFT网格、能带范围和材料参数。若插值变化仍大,应继续加密并保存前一组结果,必要时重新准备更可靠的电子输入。本例重在展示怎么操作、怎么比较、怎么识别未收敛结果,不提供已收敛的GaAs实验预测值。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗