AMSET输出:终端提取、散射时间与原生画图
解释transport与mesh文件,实际运行四组amset plot命令,给出张量提取和单位换算。
阅读本篇目录
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。专题入口、官方输运量说明