ABACUS Kubo–Greenwood电导实操
Al1完整输入、费米占据、电子温度、原生电流关联与有限频率谱线。
阅读本篇目录
下载18个条件的输入、原生谱线、电流关联与速度矩阵,解压进入附件根目录。先读取已有结果:
bash analyze.sh
表和数组在reference/analysis,高清图在reference/figures。整套新计算可提交:
sbatch submit.slurm
附件在新的work中运行,已有work时请新解压。当前复现模板分配1张P100,但本功能实际使用该主机的CPU执行路径:它不会因申请了GPU而获得GPU加速。此模板用于复现当前案例;单独的生产电导任务应选择合适CPU资源及匹配构建,勿把device改成gpu就视为已验证。本例没有8173M节点性能数据。
使用ABACUS3.10.1模块abacus/3.10.1-p100,GNU13.3、HPC-X2.50/OpenMPI5.0.10rc2环境,计算指定CPU双精度、1个MPI进程和1个线程;ASE3.29.0/NumPy负责后处理。P100模块的CUDA环境为12.8,这批KG路径未用GPU。
1 先确定算的是哪种电导#
Kubo–Greenwood(KG)把电子态、占据和电流矩阵元组合成频率相关响应。本篇计算三维电导的方向迹平均,输出电导率σ和电子热导κ;它不是完整各向异性张量,也不是ShengBTE的晶格/声子热导。
本例是一个原子的理想周期铝晶体,离子固定,PZ-LDA三价电子赝势。改变费米–狄拉克电子温度,不代表已经生成温稠密液态结构或做了离子构型平均;结果只演示操作和数值控制。
2 准备完整输入#
al-kg-k4是主要参考目录:
INPUT_PARAMETERS
suffix tutorial
pseudo_dir ../../PP_ORB
ntype 1
basis_type pw
calculation scf
ecutwfc 40
nbands 32
ks_solver dav
symmetry 0
device cpu
precision double
scf_thr 1e-7
scf_nmax 100
dft_functional pz
smearing_method fd
smearing_sigma 0.1
cal_force 0
cal_stress 0
out_chg 0
cal_cond 1
cond_dw 0.2
cond_wcut 8
cond_fwhm 0.5
cond_smear 1
cond_dt 0.02
cond_nonlocal 1
ATOMIC_SPECIES
Al 26.9815385 Al.pz-vbc.UPF
LATTICE_CONSTANT
7.653390819051
LATTICE_VECTORS
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0
ATOMIC_POSITIONS
Direct
Al
0.0
1
0 0 0 1 1 1
K_POINTS
0
Gamma
4 4 4 0 0 0
cal_cond 1开启KG输出。smearing_method fd使用费米–狄拉克占据。smearing_sigma 0.1是kBT=0.1Ry≈1.36057eV,对应电子温度约15789K,不是离子温度。cond_wcut 8和cond_dw 0.2单位eV,控制能量窗口与采样间隔。cond_smear 1为高斯核,cond_fwhm 0.5是半高全宽FWHM,单位eV,不是高斯标准差;两者相差2√(2ln2)。cond_nonlocal 1包含非局域赝势对速度算符的贡献;不能直接当成普通动量矩阵替换掉。cond_dt 0.02是响应积分时间网格,不是MD时间步。
3 先只跑一个小例子#
在计算资源环境中,从新解压的附件根目录执行:
module purge
module load abacus/3.10.1-p100
python3 -B setup.py
python3 -B run_case.py al-kg-k4
head -n 5 work/cases/al-kg-k4/Onsager.txt
脚本执行SCF后计算电流矩阵和相关函数。先检查OUT.tutorial/running_scf.log中的电子收敛,再查看当前目录的Onsager.txt与je-je.txt,不要只看总能量或程序退出。
Onsager.txt五列依次为:能量eV、σ(S/m)、电子κ(W/m/K)、L12/e(A/m)、L22/e²(W/m)。实际频率点位于每个区间中点,默认是0.1、0.3、0.5…7.9eV,第一行并不是ω=0。
4 提取三种电子温度的真实谱线#

本例kBT=0.01、0.1、0.3Ry,对应约1579、15789、47366K;仅电子占据变化,结构和离子均未热化。
python - <<'PY'
import csv
with open('reference/analysis/conditions.csv') as f:
for r in csv.DictReader(f):
if r['name'] in ['al-kg-Te0.01','al-kg-k4','al-kg-Te0.30']:
print(r['name'],'electron T/K',r['electronic_T_K'],
'first frequency sigma/S per m',r['sigma_first_Sm'])
PY
5 用于自己的体系时按顺序做#
先确定结构/构型集合和电子温度,再收敛SCF精度、空带和k点,随后检查谱线展宽、频率间隔及积分时间。液体或温稠密态通常还需要相应离子温度的充分构型采样,不能直接用本篇理想晶体替代。
接着读网格、带数和展宽控制与Onsager提取及低频外推。本篇不提供可引用为材料常数的直流电导。
算法和单位参阅3.10.1原生KG实现。