AMSET原生能带与谱线形绘图
用真实Si数值能带和散射网格运行amset plot band与lineshape,说明输入、能量零点和索引选择。
阅读本篇目录
AMSET可以直接画插值能带,也可以把已有散射网格中的信息画成谱线形。两种图的输入不同:plot band读取电子结构数据,plot lineshape读取包含散射率的mesh文件;普通高对称路径能带图片不能替代后者。
1. 准备环境和输入#
下载后保存为amset-cli.zip:
unzip amset-cli.zip
cd amset-complete-cli-wave269
module load amset/0.5.1
export PYTHONPATH="$PWD/plot-compat${PYTHONPATH:+:$PYTHONPATH}"
本例使用两份来自本集群Si实算的数值输入:
ls -lh inputs/band_structure_data.json inputs/mesh.h5
前者保留均匀网格电子结构与晶体结构;后者是既有ADP输运计算产生的41×41×41插值网格,含不同电子态的散射信息。它们都不要求重新运行VASP。数据来源与材料参数详见AMSET输入和散射机制。
plot-compat只为当前绘图进程提供Matplotlib色图接口兼容,不修改公共软件,也不参与能带、散射率或输运积分。
2. 画普通插值能带#
完整短流程可以用python run_short.py,也可以单独执行:
amset plot band inputs/band_structure_data.json \
--interpolation-factor 5 --kpath pymatgen --line-density 20 \
--emin -1 --emax 2 --width 10 --height 6 \
--format png --no-base-style --directory band-plots
--interpolation-factor控制电子结构插值,--line-density控制画图路径上的取点密度,二者不是同一个参数。--kpath pymatgen由实际晶体结构生成高对称路径;换材料时必须使用自己的结构,不能只替换图片上的路径文字。

本例沿用有限均匀网格,未做材料级插值收敛。增加路径画图点数会让曲线更平滑,却不会自动增加原始DFT信息,也不能代替原始k网格收敛。
3. 画散射谱线形#
本例选择浓度、温度列表中第0项,即原ADP mesh中的电子10¹⁹ cm⁻³、300 K:
amset plot lineshape inputs/mesh.h5 -d 0 -t 0 \
--kpath pymatgen --line-density 20 --emin -1 --emax 2 \
--width 10 --height 6 --format png --no-base-style \
--directory lineshape-plots
-d和-t是从0开始的索引,不是直接填浓度或温度。换成其他mesh时,先查看对应列表,确认该索引代表哪个条件。原始输运输出的读取方法见输出教程。

图中颜色表示程序定义的谱线形强度,色标采用对数显示。该例只包含已有ADP条件,不能把图的宽度解释为所有散射机制的总效应;也不能把它当作实验光电子谱。
4. 两张图不要直接叠加读带隙#
本例普通能带图使用因子5插值,线形图复用因子10得到的mesh,并使用该网格中的散射数据。原生绘图对非金属价带顶和费米能量零点的处理也需分别核对,所以两张图的能量位置不应直接叠加比较。
研究带隙或指定谷的能量时,应统一电子输入、插值设置、路径和能量零点,再读数;研究散射时还要统一温度、载流子状态和所含机制。有效质量的电导定义与带边曲率的区别见有效质量教程。
5. 找到结果和重新画图#
整包短流程的原生输出位于:
ls short/native-plots
配套plot.py把原生band与lineshape图按原字节整理到figures/,并从真实CSV生成质量和声子图:
python plot.py
ls figures
如果尚未运行完整流程,plot.py会读取包内reference/结果画图;它不会提交VASP或重新求散射率。若要更高画图取点密度,可以调整原生命令的--line-density,保留原始结果以便比较。