ABACUS 金属态密度与k点检查
Al的SCF到均匀网格NSCF,核对态数、能量步长和费米参考。
阅读本篇目录
DOS是均匀k网格上的态数分布。本篇先做Al自洽计算,再固定该密度计算4×4×4与8×8×8网格的DOS,说明展宽、能量步长、能带数以及k网格如何影响图形。高对称能带路径不能代替DOS积分网格。
下载输入、实际原生输出、CSV与绘图脚本,解压后进入 run.sh 所在目录。ABACUS 3.10.1 P100版使用GNU 13.3、HPC-X 2.50 / Open MPI 5.0.10rc2、CUDA 12.8与OpenBLAS 0.3.30;绘图采用ASE 3.29.0与Matplotlib。
1 提交并得到结果#
sbatch submit.slurm
模板面向核时P100用户,每个计算依次使用一张GPU、一个MPI进程和一个线程。套餐用户用 yskit 取得自己的分区模板,保留实际运行命令 bash run.sh。不要在登录节点直接执行科学计算。脚本建立 work/cases,按SCF→读取密度的NSCF顺序执行,再自动生成 work/analysis 和 work/figures。
参考输出在 reference/cases。只重画参考数据时,无需重新提交:
module load ase/3.29.0
python analyze.py reference
python plot_results.py reference
重新完整计算请用新解压目录,脚本会拒绝覆盖已经存在的work。资料包保留五个新增电子结构条件、一个既有Si网格参考和一次相同物理设置的静电势输出;重复输出步骤不会被当成额外独立物理条件。
2 自洽密度与两份NSCF#
体系为Al4、a=4.05 Å、50 Ry。SG15/ONCV赝势每Al含11个价电子,整个晶胞44电子;nbands 32 包含占据带和空带。SCF用4×4×4,输出 SPIN1_CHG.cube;两份NSCF使用 init_chg file,分别读入相同SCF密度。
al-scf 的 INPUT#
INPUT_PARAMETERS
suffix tutorial
calculation scf
basis_type pw
ecutwfc 50
scf_thr 1e-8
scf_nmax 150
ks_solver cg
device gpu
precision double
cal_force 1
cal_stress 1
pseudo_dir ../PP_ORB
symmetry 0
smearing_method gauss
mixing_beta 0.3
smearing_sigma 0.01
out_chg 1
out_dos 1
nbands 32
dos_edelta_ev 0.02
orbital_dir ../PP_ORB
展开完整 STRU、KPT
STRU#
ATOMIC_SPECIES
Al 26.9815385 Al_ONCV_PBE-1.0.upf
LATTICE_CONSTANT
1.8897261246257702
LATTICE_VECTORS
4.050000000000 0.000000000000 0.000000000000
0.000000000000 4.050000000000 0.000000000000
0.000000000000 0.000000000000 4.050000000000
ATOMIC_POSITIONS
Direct
Al
0.0
4
0.000000000000 0.000000000000 0.000000000000 1 1 1
0.000000000000 0.500000000000 0.500000000000 1 1 1
0.500000000000 0.000000000000 0.500000000000 1 1 1
0.500000000000 0.500000000000 0.000000000000 1 1 1
KPT#
K_POINTS
0
Gamma
4 4 4 0 0 0
al-dos-k4 的 INPUT#
INPUT_PARAMETERS
suffix tutorial
calculation nscf
basis_type pw
ecutwfc 50
scf_thr 1e-8
scf_nmax 150
ks_solver cg
device gpu
precision double
cal_force 1
cal_stress 1
pseudo_dir ../PP_ORB
symmetry 0
smearing_method gauss
mixing_beta 0.3
smearing_sigma 0.01
init_chg file
out_dos 1
nbands 32
dos_edelta_ev 0.02
orbital_dir ../PP_ORB
展开完整 STRU、KPT
STRU#
ATOMIC_SPECIES
Al 26.9815385 Al_ONCV_PBE-1.0.upf
LATTICE_CONSTANT
1.8897261246257702
LATTICE_VECTORS
4.050000000000 0.000000000000 0.000000000000
0.000000000000 4.050000000000 0.000000000000
0.000000000000 0.000000000000 4.050000000000
ATOMIC_POSITIONS
Direct
Al
0.0
4
0.000000000000 0.000000000000 0.000000000000 1 1 1
0.000000000000 0.500000000000 0.500000000000 1 1 1
0.500000000000 0.000000000000 0.500000000000 1 1 1
0.500000000000 0.500000000000 0.000000000000 1 1 1
KPT#
K_POINTS
0
Gamma
4 4 4 0 0 0
al-dos-k8 的 INPUT#
INPUT_PARAMETERS
suffix tutorial
calculation nscf
basis_type pw
ecutwfc 50
scf_thr 1e-8
scf_nmax 150
ks_solver cg
device gpu
precision double
cal_force 1
cal_stress 1
pseudo_dir ../PP_ORB
symmetry 0
smearing_method gauss
mixing_beta 0.3
smearing_sigma 0.01
init_chg file
out_dos 1
nbands 32
dos_edelta_ev 0.02
orbital_dir ../PP_ORB
展开完整 STRU、KPT
STRU#
ATOMIC_SPECIES
Al 26.9815385 Al_ONCV_PBE-1.0.upf
LATTICE_CONSTANT
1.8897261246257702
LATTICE_VECTORS
4.050000000000 0.000000000000 0.000000000000
0.000000000000 4.050000000000 0.000000000000
0.000000000000 0.000000000000 4.050000000000
ATOMIC_POSITIONS
Direct
Al
0.0
4
0.000000000000 0.000000000000 0.000000000000 1 1 1
0.000000000000 0.500000000000 0.500000000000 1 1 1
0.500000000000 0.000000000000 0.500000000000 1 1 1
0.500000000000 0.500000000000 0.000000000000 1 1 1
KPT#
K_POINTS
0
Gamma
8 8 8 0 0 0
手动运行NSCF时,要把密度放到相应输出目录;资料包已自动完成:
mkdir -p work/cases/al-dos-k8/OUT.tutorial
cp work/cases/al-scf/OUT.tutorial/SPIN1_CHG.cube work/cases/al-dos-k8/OUT.tutorial/
不要在新NSCF目录里只写 init_chg file 却没有提供密度,也不要把另一个晶胞或另一套赝势的密度放进来。NSCF总能量不作为新的自洽总能量用于反应能或EOS。
3 读DOS的列,核对态数#
实际输出 DOS1_smearing.dat 第一列为能量/eV,第二列为态密度,单位states/(eV·cell)。本版第三列是第二列逐行累加;它尚未乘能量步长。本例步长 dos_edelta_ev 0.02,第三列末值约3200,乘0.02后约64,对应32条带×每带两个自旋态。不要把3200当电子数,也不要把包含空带的64态当成44个占据电子。
module load ase/3.29.0
python analyze.py work
cat work/analysis/RESULTS.json
head -n 5 work/analysis/al-dos-k8.csv
分析脚本实际对第二列积分,得到约63.99996态。对于占据电子数,还必须结合费米占据,不能把整个能量窗口的所有态都加成占据电子。

4 费米能与k点是否足够#
| NSCF网格 | 本例费米能/eV | 费米处DOS / states/(eV·cell) |
|---|---|---|
| 4×4×4 | 10.533932 | 5.58035 |
| 8×8×8 | 10.995562 | 1.44748 |
两者费米能相差约0.46163 eV,费米附近峰形也明显依赖网格,所以这一对结果用于学习与识别未收敛情况,不据此给出已收敛的费米处态密度。应继续加密SCF与NSCF网格,检查截断、带数和DOS平滑展宽;不要只把曲线画得更平滑。
图左分别用各自EF为零,方便看费米附近的形状;图右保留共同原生能量参考展示半芯态和总态数。改变绘图参考不改变原始本征值,也不能掩盖EF差异。半芯态位于更深能区,不在左侧±8 eV窗口里。
5 DOS展宽和占据展宽分开看#
smearing_sigma 0.01 控制SCF/占据中的Gaussian展宽,单位Ry;dos_edelta_ev 0.02 控制输出能量采样间隔,单位eV。DOS图的平滑宽度是另一项设置,改变时应查本版 dos_sigma 说明,三者不要混为一谈。
继续看Si轨道投影与求和和Al价电子入门。格式依据ABACUS官方DOS说明,本篇数值与第三列算法按3.10.1实际文件和随包 source-notes/cal_dos.cpp 核对。