ABACUS 隐式溶剂与腔体参数实操
Pt12中性薄层的介电常数、tau、完整输入及实际介电/腔体能量分解。
阅读本篇目录
下载完整输入、原生密度/电势/日志与绘图脚本,解压进入附件根目录。先读已有数据:
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薄层和216个电子,只改变介电常数和腔体参数。

右图是平面平均电子密度与输入nc的示意。真实腔体使用每个三维网格点的局域密度,不能把平面平均密度直接当成介电函数或精确腔体边界。
2. 完整介电常数80输入#
展开完整 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
imp_sol 1
eb_k 80
tau 0.000010798
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
关键参数:
imp_sol 1启用该连续介质模型。eb_k 80设体相相对介电常数;只给一个介电常数不等于完整描述真实溶剂。tau 0.000010798是本例有效腔体表面项系数,单位Ry/Bohr²,不是温度。sigma_k 0.6为本例对应默认平滑宽度,nc_k 0.00037为密度阈值、单位Bohr⁻³;附件其他未显式写出的设置保留该版本默认值,原生OUT/INPUT可查看实际展开值。
本例通过eb_k和tau分开设置四个控制:ε=1且tau=0、ε=20、ε=80、ε=80且tau=0。ε=1时若tau仍非零,腔体项仍可能存在,不能简单当成“真空模型”。
3. 提取介电项和腔体项#
grep -E 'E_sol_el|E_sol_cav|convergence is achieved|!FINAL_ETOT_IS' work/cases/pt-solv-eps80/OUT.tutorial/running_scf.log | tail -n 5
原生输出的最后一列是eV;E_sol_el和E_sol_cav分开记录,不要漏掉正的腔体代价。实际结果:
| 模型 | 介电项,eV | 腔体项,eV | 相对真空完整SCF能量变化,eV |
|---|---|---|---|
| pt-solv-eps1-tau0 | 0.000000 | 0.000000 | 0.000000 |
| pt-solv-eps20 | -0.008085 | 0.028104 | 0.020049 |
| pt-solv-eps80 | -0.014047 | 0.028104 | 0.014132 |
| pt-solv-eps80-tau0 | -0.014052 | 0.000000 | -0.013976 |
完整SCF能量变化不必严格等于两项简单相加,因为电子密度和其他能量项也会响应。ε=1且tau=0的本例与真空参考一致;ε=80、tau=0的腔体项为0。这些控制帮助判断你究竟改变了哪一部分模型。
python - <<'PY'
import csv
with open('reference/analysis/solvent-components.csv') as f:
for r in csv.DictReader(f):
print(r['name'],r['dielectric_eV'],r['cavity_eV'],
r['total_vs_vacuum_eV'])
PY
4. 复用时还要注意什么#
先收敛真空下的相同结构,保持赝势、电子数和数值设置一致,再逐项改变介电或腔体参数。带电、外场和溶剂同时启用时,物理边界条件更复杂,不能把这里的中性单因素结果直接拼成电化学反应自由能。
本例没有振动、溶剂采样、温度/压力修正或化学势循环,输出是对应固定模型的电子能量与连续介质修正。电子展宽里的E_entropy(-TS)也不是溶液的完整热力学熵。
参数单位和默认值见ABACUS3.10.1隐式溶剂输入。