PYATB 折射率与吸收光谱提取
从实际复介电函数提取n、κ、吸收系数和反射率,明确单位与适用范围。
阅读本篇目录
下载真实Si矩阵、8个PYATB条件、离线依赖和绘图脚本。解压进入附件根目录,先直接提取已有结果:
bash analyze.sh
首次运行会用附件内已固定版本的依赖,在本目录创建 venv,不修改公共环境;图在 reference/figures,数据在 reference/analysis。新解压目录重新执行全部PYATB计算:
sbatch submit.slurm
模板在分配资源中建立 work,顺序运行8个分析条件,再核对与画图。P100模板这里分配主机资源,实际PYATB使用1个CPU进程、1线程,不是GPU加速测试。它读取已有ABACUS矩阵,不重新运行DFT;已有 work 时请新解压,以免覆盖结果。
环境为PYATB1.1.2、mpi4py4.1.1、OpenMPI5.0.10,Python3.11及ASE3.29.0环境内的NumPy/SciPy用于后处理。离线轮子和哈希随附件提供。ABACUS矩阵来源为集群真实Si2计算:3.10.1、LCAO/PBE、80 Ry、8 Bohr DZP、26个NAO、8价电子、电子k网格2³;这些是有限采样教学结果,不能当作已经收敛的材料光谱。
1 先有复介电函数#
先看PYATB光学响应。这里使用同一个6³网格、η=0.1 eV算例的 dielectric_function_real_part.dat 和 dielectric_function_imag_part.dat,不是拼接不同条件的实部/虚部。
bash analyze.sh
脚本自动生成 optical_observables.png;原始σ、ε和派生数据都在 reference/analysis/pyatb-data.npz,使用你自己的新结果时运行 venv/bin/python -B analyze.py work 和 venv/bin/python -B plot_results.py work。调用这两条命令前加载 openmpi/5.0.10-cuda12.8,完整脚本会自动处理环境。
2 四个量分别是什么#
对本例立方、各向同性体相,采用 n+iκ=√ε 的被动介质分支:
| 输出 | 含义与单位 |
|---|---|
| n | 折射率,无量纲 |
| κ | 消光系数,无量纲 |
| α | 吸收系数,本图为cm⁻¹ |
| R | 真空到体相的法向入射反射率,图中用百分比 |
吸收系数用 α=2ωκ/c,注意光子能量/eV先转换成角频率/s;S/m、eV与cm⁻¹不能直接混乘。反射率为 |(n+iκ−1)/(n+iκ+1)|²。

附件会同时核对 (n+iκ)²=ε、被动分支符号和反射率范围,保留原始曲线。不能人为把峰位移动到文献位置,也不能根据显示效果单独缩放某条曲线。
3 怎样迁移到自己的材料#
先用你自己的同一套H/S/r计算复介电函数,再保持两个文件同一能量网格。各向异性材料不能把一个对角分量直接当成任意传播方向的折射率;二维含真空超胞的体积归一化也不能直接解释成实验薄膜吸收。斜入射、多层膜和表面粗糙度需要另外的光学传播模型。
本例的有限η、响应网格、虚跃迁上限和PBE近似会一起传递到n、κ、α和R。它给出可操作的数据处理流程,尚不用于确定实验峰位、收敛静态折射率或器件性能。