py4vasp 化学势与载流子字段
实际温度和化学势导出,辨明原始每胞价电子数、净掺杂条件与输运数据前提。
阅读本篇目录
本篇处理鸢算科技集群已经完成的两份Si电声耦合结果:原生VASP6.6.1-P100-HDF5,NVHPC25.3/CUDA12.8构建;后处理使用py4vasp0.11.3,绘图使用ASE3.29环境中的NumPy/Matplotlib。以下命令只读已有数据,1个CPU即可,不启动VASP,不需要GPU。
下载两份HDF5、输入记录、实际数值与绘图脚本,在新目录:
unzip py4vasp-elph-selfenergy-practical*.zip -d elph-example
cd elph-example
module load py4vasp/0.11.3
bash run.sh
输出analysis/selfenergy.csv(60行)、analysis/chemical-potential.csv(6行)、analysis/RESULTS.json及4图。已有analysis时不覆盖;重新操作请另解压一份。其他电脑已安装py4vasp0.11.3、h5py、NumPy和Matplotlib,可用PY4PY=python3 PLOTPY=python3 bash run.sh。
公开HDF5重新打包并移除了整个POTCAR组,其余科学数据与原文件相同;不含POTCAR、WAVECAR、VASP程序或phelel势导数档案。本包是后处理资料。需要从头计算电声耦合时,按VASP原生电声耦合流程准备本人的授权程序和前置数据。
1. 读取温度与化学势#
python - <<'PYDATA'
import py4vasp
c=py4vasp.Calculation.from_path('inputs/si-selfen6')
x=c.electron_phonon.chemical_potential.read()
for key,value in x.items():
print(key,value)
PYDATA
本例输出包括fermi_energy、chemical_potential、carrier_density、temperatures和selfen_carrier_per_cell。先看数组形状和原生含义,再给表格加单位。
2. 这份文件中的8和0分别是什么#
| 字段 | 本例实际值 | 本例含义 |
|---|---|---|
| temperatures | 0、300、600 | 温度,K |
| chemical_potential | 6.026074258959,三温度相同 | 原生μ,eV |
| selfen_carrier_per_cell | 0 | 额外载流子/胞的中性条件 |
| carrier_density | 8,三温度相同 | 当前文件/API保留的每胞价电子数 |
特别注意:虽然API字典键名为carrier_density,在本例0.11.3数据里它来自原生carrier_per_cell,数值8并没有除以晶胞体积。不能直接标成cm⁻³,也不能把全部8个价电子当成8个掺杂载流子。selfen_carrier_per_cell=0同样不表示体系没有电子。

3. 导出自己的温度表#
cat analysis/chemical-potential.csv
python - <<'PYDATA'
import csv
for row in csv.DictReader(open('analysis/chemical-potential.csv')):
print(row['case'],row['temperature_K'],row['mu_eV'],
row['raw_carrier_density_field'],row['neutral_doping_per_cell'])
PYDATA
CSV刻意保留raw_carrier_density_field这一原始字段名称,并另列净掺杂条件,方便你回查。不要先做单位换算再忘记原始数据到底是总价电子数、额外电子数,还是已按体积归一化的密度。
本例μ在三个温度相同,只是这组中性、小网格数据的实际输出,不意味着任意掺杂与温度扫描都会有相同化学势。
4. 化学势不等于输运系数#
本例虽然能读到μ和每胞计数,electron_phonon.transport仍没有实际实例;不能据此给出迁移率、电导或Seebeck。若需要输运,请先完成对应的散射与输运计算,再检查数组、单位及网格收敛。
数据入口的区别继续看py4vasp全部quantity与文件前提。本页与电声自能提取及选定Γ点修正共享同一资料包和实际来源。