AMSET专题

AMSET输出:终端提取、散射时间与原生画图

解释transport与mesh文件,实际运行四组amset plot命令,给出张量提取和单位换算。

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

AMSET 的主要输出有两类:transport_*.json 保存随浓度和温度变化的输运张量,mesh_*.h5 保存电子态、速度和分机制散射率。前者适合画迁移率/电导曲线,后者用于分析不同电子态的散射。

1. 先看文件与列表顺序#

ls -lh transport*.json mesh*.h5
python - <<'PY'
import json, glob
a = json.load(open(glob.glob('transport*.json')[0]))
print('浓度 cm^-3:', a['doping'])
print('温度 K:', a['temperatures'])
print('散射机制:', list(a['mobility']))
PY

本例只有 ADP 与 overall,二者迁移率相同是因为只启用一个机制;不能据此把 overall 理解成所有物理散射都已计算。

2. 从完整张量提取一个结果#

在某个 AMSET 输出目录执行:

python - <<'PY'
import json, glob
import numpy as np
a = json.load(open(glob.glob('transport*.json')[0]))
i, j = 0, 0
mu = np.array(a['mobility']['overall'][i][j])
sigma = np.array(a['conductivity'][i][j])
S = np.array(a['seebeck'][i][j])
print('浓度/温度:', a['doping'][i], a['temperatures'][j])
print('迁移率完整张量 cm^2/(V s):\n', mu)
print('迹平均迁移率:', np.trace(mu)/3)
print('迹平均电导 S/m:', np.trace(sigma)/3)
print('迹平均Seebeck microV/K:', np.trace(S)/3)
PY

数组索引顺序为浓度、温度、3×3 张量。低对称材料应看主轴/指定方向,不能一律用迹平均替代方向信息。electronic_thermal_conductivity 是电子热导率,不含晶格热导。

3. 用软件自己的绘图命令#

下列命令均使用本专题实际运行的输出。回到附件根目录,在分配的 CPU 环境执行:

bash plot-native.sh
ls native-plots

脚本实际调用:

amset plot mobility work/carrier-temperature/transport*.json -x temperature -d '0 1' --format png --no-base-style --directory native-plots
amset plot transport work/carrier-temperature/transport*.json -x temperature --n-type --format png --no-base-style --directory native-plots
amset plot rates work/factor10/mesh*.h5 -d 0 -t 0 --plot-type lifetime --format png --no-base-style --directory native-plots
amset plot convergence work/factor5/transport*.json work/factor10/transport*.json work/factor20/transport*.json -x temperature -d '0' --format png --no-base-style --directory native-plots

-d、-t 是列表索引,从 0 开始,不是直接填浓度或开尔文数值。--plot-type lifetime 将散射率转为相应时间;图中使用哪些电子态及权重,仍需结合能量窗口理解。--no-base-style 让本例使用当前 Matplotlib 环境的基础字体样式。

当前环境的 Matplotlib 已移除 AMSET 0.5.1 绘图代码调用的 cm.get_cmap。附件 plot-native.sh 只对绘图进程加载本地兼容适配,将该调用转接到 matplotlib.colormaps,不修改公共安装,也不参与散射率或输运积分。若要在终端逐条运行上面的命令,先在附件根目录设置:

export PYTHONPATH="$PWD/plot-compat${PYTHONPATH:+:$PYTHONPATH}"

4. 读取某些电子态的输运散射时间#

下面沿用电子 10¹⁹ cm⁻³、300 K,选取导带底上方 0.05–0.10 eV 的保留电子态:

cd work/factor10
python - <<'PY'
import glob, h5py, numpy as np
with h5py.File(glob.glob('mesh*.h5')[0]) as h:
    E = h['energies_up'][()]
    cbm = E[int(h['vb_idx_up'][()])+1:].min()
    mask = (E >= cbm+0.05) & (E <= cbm+0.10)
    rate = h['scattering_rates_up'][0, 0, 0][mask]
    tau_fs = 1e15/rate
    print('保留态数量:', len(rate))
    print('最小/中位/最大 fs:', tau_fs.min(), np.median(tau_fs), tau_fs.max())
PY

这是一组选定不可约态的未加权时间统计,不是整个材料的通用常数 τ,也不等同于严格谱函数的准粒子寿命。原 Si ADP 参考在这一窗口有 11 个态,时间约 67.81–193.18 fs,中位数约 136.71 fs。

5. 其他命令怎样找#

amset --help
amset deform --help
amset plot --help
amset eff-mass --help
amset phonon-frequency --help

当前 CLI 的主要入口包括 run、wave、deform、plot、eff-mass 和 phonon-frequency。本专题实算串起前四个入口中的输入/ADP/四类绘图;极性声子与其他散射机制需要相应材料和新输入,不能从当前非极性 Si 结果自动补出。

教程四张汇总图可用 python analyze.py 重画,完整数据见 results/transport.csv。专题入口、官方输运量说明

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

查看配图

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

100%查看原图 ↗