ABACUS 专题

ABACUS 薄层电场与偶极修正实操

真实Pt12真空方向、锯齿区、零场控制、SCF到静电势及原生剖面。

更新于 2026-10-29约 6 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载完整输入、原生密度/电势/日志与绘图脚本,解压进入附件根目录。先读已有数据:

bash analyze.sh

它只用一个CPU核心分析参考数据,生成CSV和四张图,不启动DFT。需要完整复算时:

sbatch submit.slurm

脚本申请一张P100,顺序处理18个目录,其中3个是读取匹配SCF密度的静电势导出控制,1个是明确标识的门区电子聚集反例。研究自己的体系只需选用对应模型输入,不必重算所有对照;提交资源按自己的账户通过yskit核对。参考环境为ABACUS3.10.1、GNU13.3、HPC-X2.50/OpenMPI5.0.10rc2、CUDA12.8、OpenBLAS0.3.30,每个计算1个MPI进程/1个CPU线程、GPU双精度。不要在登录节点执行DFT。

本批是固定Pt12薄层、Γ点、60 Ry和scf_thr=1e-6的操作示例;电子展宽0.015 Ry用于金属占据平滑,不能解释成溶液或离子温度。真空厚度、横向尺寸、k点和数值精度未作材料性质收敛,不输出精确功函数、恒电势反应能或溶剂化自由能。

1. 先明确真空和电场方向#

本篇把原始Pt12薄层整体旋转为真空沿z/第三格矢,因此efield_dir 2。这与旧表面电场资料包的x真空坐标不同;旧包要用efield_dir 0,不能在不同结构之间只复制方向数字。

真实Pt12结构、空区位置及两种原生电势输出

本例Pt核坐标约z=5–9.53 Å,单胞高度约20 Å。锯齿势的回落区在z/L=0.8–0.9,即约16–18 Å,远离原子;栅极模型另用0.7位置,放在约14 Å处。重新建模时要按实际格矢和原子坐标检查,不能假定“方向2永远是笛卡尔z”。

2. 完整正向外场输入#

展开完整 INPUT、STRU、KPT

INPUT#

INPUT_PARAMETERS
suffix tutorial
calculation scf
dft_functional pbe
basis_type pw
device gpu
precision double
pseudo_dir ../../PP_ORB
orbital_dir ../../PP_ORB
symmetry -1
ecutwfc 60
scf_thr 1e-6
scf_nmax 200
ks_solver cg
nbands 144
gamma_only 0
smearing_method gauss
smearing_sigma 0.015
mixing_type broyden
mixing_beta 0.1
cal_force 1
cal_stress 0
out_chg 1
out_pot 1
efield_dir 2
efield_pos_max 0.8
efield_pos_dec 0.1
nelec 216
efield_flag 1
dip_cor_flag 0
efield_amp 0.001

STRU#

ATOMIC_SPECIES
Pt 195.078 Pt_ONCV_PBE-1.0.upf

LATTICE_CONSTANT
1.889716

LATTICE_VECTORS
5.54844 0 0
-2.77422 4.80509 0
0 0 20

ATOMIC_POSITIONS
Cartesian

Pt
0.0
12
0.0000000000 0.0000000000 5.0000000000 1 1 1
2.7742217000 0.0000000000 5.0000000000 1 1 1
-1.3871108000 2.4025464000 5.0000000000 1 1 1
1.3871110000 2.4025461000 5.0000000000 1 1 1
2.7742215000 1.6016975000 7.2651424000 1 1 1
0.0000000000 1.6016975000 7.2651424000 1 1 1
1.3871107000 4.0042440000 7.2651424000 1 1 1
-1.3871108000 4.0042440000 7.2651424000 1 1 1
0.0000000000 3.2033951000 9.5302848000 1 1 1
2.7742217000 3.2033951000 9.5302848000 1 1 1
1.3871108000 0.8008486000 9.5302848000 1 1 1
4.1613325000 0.8008486000 9.5302848000 1 1 1

KPT#

K_POINTS
0
Gamma
1 1 1 0 0 0

关键设置为efield_flag 1、efield_dir 2、efield_amp 0.001。场强采用原子单位,本例约0.05142 V/Å。efield_pos_max和efield_pos_dec控制锯齿势回落区,必须落在真空,不能穿过原子层。

比较目录:pt-vacuum(无场)、pt-field-zero(开场模块但幅度0)、pt-field-plus/minus(±0.001)、pt-dipole-zero(零场加偶极修正)和pt-field-plus-dipole(正场加偶极修正)。

3. 偶极修正与外场分开设置#

efield_flag 1
dip_cor_flag 1
efield_amp 0

这是纯偶极修正的写法;efield_amp 0才表示没有外加场。有限场例子保留幅度0.001。偶极修正处理周期薄层的人工电场问题,不会自动替你选择正确真空区域或把计算变为恒电势。

本例开场但幅度0的总能量与无场参考一致;对称薄层的纯偶极修正变化约1 μeV/单胞。它们是本例的零场控制,不代表所有非对称表面都可以忽略偶极修正。

4. 从SCF到静电势文件#

out_pot 1写SPIN1_POT.cube,是有效势;out_pot 2写ElecStaticPot.cube,不含交换相关势。这两类数据不能混用。当前静电势输出还会按启用的外场/偶极/固定势设置加入相应项,不能都当作“无场的平坦真空势”。

附件先完成各模型SCF,再把其自己的SPIN1_CHG.cube复制给对应静电势导出目录,保留同一结构、k点、赝势和电子数,用init_chg file、out_pot 2完成导出。以正场为例,在已经分配的计算资源且已加载相应ABACUS模块的环境中:

cd work/cases/pt-static-field-plus
mkdir -p OUT.tutorial
cp ../pt-field-plus/OUT.tutorial/SPIN1_CHG.cube OUT.tutorial/
mpirun -np 1 abacus > static.log

完整导出INPUT:

展开正场静电势导出INPUT
INPUT_PARAMETERS
suffix tutorial
calculation scf
dft_functional pbe
basis_type pw
device gpu
precision double
pseudo_dir ../../PP_ORB
orbital_dir ../../PP_ORB
symmetry -1
ecutwfc 60
scf_thr 1e-6
scf_nmax 200
ks_solver cg
nbands 144
gamma_only 0
smearing_method gauss
smearing_sigma 0.015
mixing_type broyden
mixing_beta 0.1
cal_force 0
cal_stress 0
out_chg 1
out_pot 2
efield_dir 2
efield_pos_max 0.8
efield_pos_dec 0.1
nelec 216
efield_flag 1
dip_cor_flag 0
efield_amp 0.001
init_chg file

5. 平面平均与实际斜率#

原生静电势的真空局部剖面和偶极修正对照

图的纵轴为本次电势减去本次Fermi能;所有势以原生Ry转为eV。拟合窗口统一使用z/L=0.65–0.75。相对零场基线的实际斜率变化:

量 本例数值,eV/Å
输入外场对应幅度 0.051422
无偶极修正,实际斜率变化 0.087076
有偶极修正,实际斜率变化 0.051929

实际剖面还包括电子诱导和周期边界响应,所以不能把任何导出文件的斜率都自动当成输入外场。有限外场下也没有到处相同的真空平台,不能随意取一个点当作唯一功函数。

python - <<'PY'
import json
with open('reference/analysis/RESULTS.json') as f:
    a=json.load(f)
for key,value in a['field_profile'].items():
    print(key,value)
PY

方向和参数见官方3.10.1输入手册;两类势的区别见静电势输出实现。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗