AMSET:怎样检查插值网格收敛
保持同一GaAs散射模型,从47³到125³网格实算对照总迁移率及四项分项变化,避免把程序结束当成收敛。
阅读本篇目录
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 |

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

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实验预测值。