AMSET扫描:电子、空穴、温度与浓度
用Si真实波函数和形变势运行电子与空穴扫描,给出设置、实际输运数据及单位解释。
阅读本篇目录
准备好 vasprun.xml、wavefunction.h5 和 deformation.h5 后,就可以扫描温度和载流子浓度。本页沿用输入教程的 Si 数据,计算 ADP 散射下的迁移率、电导和 Seebeck 系数。
1. 准备计算目录与完整设置#
mkdir transport
cp si-bulk/vasprun.xml transport/
cp wavefunction.h5 deformation.h5 transport/
cd transport
nano settings.yaml
下面是本次电子/空穴扫描的完整实际设置:
doping:
- -1.0e+19
- -1.0e+20
- 1.0e+19
- 1.0e+20
temperatures:
- 300
- 450
- 600
interpolation_factor: 10
scattering_type:
- ADP
wavefunction_coefficients: wavefunction.h5
elastic_constant:
- - 153.14954474000004
- 56.73880305
- 56.73880305
- 0.0
- 0.0
- 0.0
- - 56.73880305
- 153.14954474000004
- 56.73880305
- 0.0
- 0.0
- 0.0
- - 56.73880305
- 56.73880305
- 153.14954474000004
- 0.0
- 0.0
- 0.0
- - 0.0
- 0.0
- 0.0
- 72.78602494000005
- 0.0
- 0.0
- - 0.0
- 0.0
- 0.0
- 0.0
- 72.78602494000005
- 0.0
- - 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 72.78602494000005
deformation_potential: deformation.h5
nworkers: 2
energy_cutoff: 1.5
calculate_mobility: true
separate_mobility: true
file_format: json
write_mesh: true
print_log: true
unity_overlap: false
浓度单位为 cm⁻³。负值表示电子,正值表示空穴;不是把电子电荷符号写进电导单位。温度单位 K。本例用两档浓度、电子与空穴两种符号、三档温度,共 12 个输运状态。
nworkers: 2 使用两个 CPU 工作进程,仍需受实际申请资源限制。energy_cutoff: 1.5 与两个 HDF5 文件的提取范围一致;separate_mobility: true 是当前 0.5.1 实际使用的参数名。
2. 在分配的计算资源内运行#
module load amset/0.5.1
export OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1
export NUMBA_CACHE_DIR="$PWD/.numba-cache"
mkdir -p "$NUMBA_CACHE_DIR"
amset run
ls transport*.json mesh*.h5
如果使用集群现有 CPU Slurm 模板,则在这个目录复制后提交:
cp /public/slurm_scripts/hs_user/amset/0.5.1/8173m/sub_amset_0.5.1_8173m.sh submit.sh
sbatch submit.sh
squeue -u "$USER"
现有模板按 CPU 分区的整节点规则申请 56 核,并将工作进程数设为申请值;文件里的 nworkers: 2 会被模板命令行覆盖。只需要复现本专题的小例子时,也可以在已分配的 CPU 环境中直接执行前面的 amset run。
3. 本次实际结果#
以下取张量迹的三分之一,便于用一个数概览立方 Si;各方向张量仍保存在原始 JSON 中。
| 载流子 | 浓度 / cm⁻³ | 温度 / K | ADP迁移率 / cm²·V⁻¹·s⁻¹ | 电导 / S·m⁻¹ | Seebeck / μV·K⁻¹ |
|---|---|---|---|---|---|
| 电子 | 1e+19 | 300 | 1271.13 | 2.037e+05 | -273.80 |
| 电子 | 1e+19 | 450 | 644.29 | 1.032e+05 | -327.65 |
| 电子 | 1e+19 | 600 | 398.33 | 6.392e+04 | -363.54 |
| 电子 | 1e+20 | 300 | 880.41 | 1.411e+06 | -107.51 |
| 电子 | 1e+20 | 450 | 515.78 | 8.264e+05 | -147.02 |
| 电子 | 1e+20 | 600 | 342.34 | 5.485e+05 | -177.92 |
| 空穴 | 1e+19 | 300 | 3021.35 | 4.841e+05 | 250.92 |
| 空穴 | 1e+19 | 450 | 1723.44 | 2.761e+05 | 296.76 |
| 空穴 | 1e+19 | 600 | 1087.02 | 1.743e+05 | 337.57 |
| 空穴 | 1e+20 | 300 | 2362.32 | 3.785e+06 | 74.27 |
| 空穴 | 1e+20 | 450 | 1373.91 | 2.201e+06 | 119.49 |
| 空穴 | 1e+20 | 600 | 903.79 | 1.448e+06 | 158.06 |

本页是同一套既有DFT数据重新执行后处理的实际结果;与VASP与AMSET实例原表相比,部分迁移率相差约1%。附件保留两组输出便于比较;在原计算环境重新执行、分别使用2个及4个工作进程时,都复现了原表;本轮另一套CPU环境的重复结果也一致。跨环境约1%的差异应与插值误差一起检查,不把它解释成新的材料物理变化。
这些是 ADP 单一机制的模型结果。对具体掺杂样品,杂质散射、带隙、补偿及其他声子过程可能改变总迁移率。高温下还要注意未校正 PBE 带隙带来的双极输运影响。
4. 怎样改成自己的扫描#
在自己的目录中编辑两个列表即可:
nano settings.yaml
amset run
例如只计算电子时保留负浓度;只关心 300 K 时设置 temperatures: [300]。更换材料则必须同时替换电子结构、波函数、形变势和弹性参数,不能只改浓度。
插值与波函数近似的影响见数值对照,画图与 JSON 提取见输出分析。AMSET 官方参数说明