QE:金刚石C K边吸收谱的准备与计算
演示吸收原子标记、芯空穴赝势、电荷计数、芯态提取和自洽计算。
阅读本篇目录
1. 计算路线#
QE的 xspectra.x 可结合带GIPAW信息的赝势与基态电子结构计算X射线吸收近边谱。本例演示金刚石C K边的偶极跃迁流程:准备吸收原子和赝势→SCF→提取1s芯态→Lanczos谱→处理占据态和展宽→导出作图。
实际采用8个C的立方晶胞,a=6.740256 Bohr,约3.5668 Å。PBE、40/160 Ry波函数/密度截断,SCF为2×2×2 Γ中心网格,吸收谱采用位移的2×2×2网格。本例适合掌握操作;小晶胞、粗网格和简单芯空穴处理未做系统收敛,不能作为实验吸收边预测。
下载两套SCF与XSpectra完整输入、实际输出、光谱CSV和绘图脚本,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd qe-xspectra-carbon
module load ase/3.29.0
bash read.sh
bash plot.sh
这会读取实际完成的结果生成图表,不会重新运行电子结构计算。新计算需先准备赝势,再提交作业。
2. 把吸收原子单独命名#
同一种元素也可以在 ATOMIC_SPECIES 中定义两个标签。这里用 C_h 标记位于原点的吸收原子,其余七个为 C,使 xiabs=1 明确对应第一种原子类型。
无芯空穴对照使用普通C赝势,总电荷0;芯空穴模型只把一个吸收原子的赝势换成 Ch_PBE_TM_2pj.UPF,并设置 tot_charge=1。这套芯空穴赝势的价电荷为5,配合+1总电荷后仍保持32个价电子。tot_charge为正表示减少电子,不是增加电子。
下面为芯空穴模型的完整 scf.in:
&control calculation='scf',prefix='diamond',pseudo_dir='../../pseudo',outdir='./tmp',tprnfor=.true.,verbosity='high' /
&system ibrav=1,celldm(1)=6.740256,nat=8,ntyp=2,nbnd=16,ecutwfc=40,ecutrho=160,tot_charge=1 /
&electrons conv_thr=1d-8,mixing_beta=.3 /
ATOMIC_SPECIES
C_h 12.0 Ch_PBE_TM_2pj.UPF
C 12.0 C_PBE_TM_2pj.UPF
ATOMIC_POSITIONS crystal
C_h 0 0 0
C 0 .5 .5
C .5 0 .5
C .5 .5 0
C .75 .75 .25
C .75 .25 .75
C .25 .75 .75
C .25 .25 .25
K_POINTS automatic
2 2 2 0 0 0
无芯空穴模型只改变吸收原子赝势和总电荷,对应关键输入为:
tot_charge=0
ATOMIC_SPECIES
C_h 12.0 C_PBE_TM_2pj.UPF
C 12.0 C_PBE_TM_2pj.UPF
完整两个输入均在资料包中。芯空穴模型是带电周期超胞,存在周期背景和镜像作用;正式研究应增大超胞、比较芯空穴近似、网格与展宽,并采用明确的能量对齐方法。
3. 准备官方示例赝势与芯态#
bash prepare.sh
# 已有相同赝势时,可改为 bash prepare.sh /你的赝势目录
ls work-new/pseudo
cat work-new/cases/core-hole/scf.in
准备脚本按固定QE源码提交的官方示例地址下载普通与芯空穴两份UPF并核对SHA256,不附带程序或整套赝势库。下载地址见 MODEL.json。必须使用包含所需GIPAW信息的赝势,不能只把普通赝势文件改名。
从普通C赝势提取1s径向芯态的实际工具命令:
cd work-new/cases/core-hole
bash ../../../tools/upf2plotcore.sh ../../pseudo/C_PBE_TM_2pj.UPF > C.wfc
head -3 C.wfc
首行为 # number of core states 1 = 1 0,表示一个n=1、l=0芯态,后面是径向网格和波函数。例子实际提取1073个径向点,直接积分∫u²dr约1.000026;保留工具的原始打印精度,不另行强制归一化。普通与芯空穴两套谱使用同一份C 1s芯态。
4. 先完成SCF#
在分配的CPU资源中:
module load qe/7.6-8173m
export OMP_NUM_THREADS=1 MKL_NUM_THREADS=1
pw.x -in scf.in > scf.out
grep "number of electrons" scf.out
grep "convergence has been achieved" scf.out
ls tmp/diamond.save
两种模型都应显示32价电子。保存 tmp/diamond.save:后续XSpectra需要同一结构和赝势对应的自洽电子结构,不应把另一套模型的save目录复制过来混用。
5. 一键提交完整示例#
回到资料包根目录,普通账号执行:
sbatch --chdir="$PWD" job.slurm
squeue -u "$USER"
完整脚本申请1个CPU进程、1个线程和4 GiB内存,顺序完成两种模型的SCF、x方向吸收谱、三种缓存重绘及z方向独立谱。使用QE 7.6 CPU构建,Intel oneAPI 2024.2、Intel MPI 2021.13和MKL环境。这里提供的是使用流程,不是CPU性能对比。
结束后:
bash read.sh work-new analysis-new
bash plot.sh analysis-new
cat analysis-new/spectral-summary.csv
输入来源:QE固定版本官方金刚石XSpectra示例。