LAMMPS 专题

LAMMPS薄层静电与slab修正

在x/y周期、z非周期的中性双电荷层上实际比较Ewald、PPPM和slab 3/4/auto。

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

薄层体系常在x/y周期、z方向留出空间。使用长程静电时,需要把边界与相应的slab处理一起设置。本篇固定一个带z向偶极的中性双电荷层,实际比较Ewald与PPPM、扩展因子3/4及自动选择。

下载12组长程静电完整输入、原始能量与力、CSV及绘图工具,解压进入run.sh目录。

1 提交并读取结果#

sbatch submit.slurm

模板为核时P100分区1GPU1CPU,顺序完成12个固定结构单点;使用P100构建中的CPU执行路径,没有GPU后缀,不作GPU性能结论。LAMMPS30Sep2026、GNU C++13.3.0/C++17、Open MPI5.0.10、双精度MKL FFT;分析ASE3.29.0。

套餐用户用yskit生成所属分区脚本,在分配资源中执行bash run.sh;不要在登录节点模拟。inputs为新输入,reference为本文实算输出,work为新结果,已有work请重新解压。脚本完成后自动提取和画图。

2 模型与完整输入#

8×8×20Å盒中放置4个+1e与4个−1e电荷,两层分别位于z=8Å和10Å;整个盒电中性。boundary p p f表示x/y周期、z非周期;本例只做固定结构单点,不移动原子。

units real
atom_style charge
atom_modify map array
boundary p p f
region box block 0 8 0 8 0 20 units box
create_box 2 box
mass 1 23.0
mass 2 35.45
create_atoms 1 single 1 1 8 units box
create_atoms 2 single 3 3 10 units box
create_atoms 1 single 1 5 8 units box
create_atoms 2 single 3 7 10 units box
create_atoms 1 single 5 1 8 units box
create_atoms 2 single 7 3 10 units box
create_atoms 1 single 5 5 8 units box
create_atoms 2 single 7 7 10 units box
set type 1 charge 1.0
set type 2 charge -1.0
pair_style coul/long 3.8
pair_coeff * *
pair_modify table 0
kspace_style pppm 1e-8
kspace_modify slab 3.0
neighbor 0.3 bin
thermo_style custom step atoms pe ecoul elong press
thermo_modify norm no format float %.16g
run 0
write_data structure.data
write_dump all custom atoms.dump id type q x y z fx fy fz modify sort id format float %.16g

kspace_modify slab 3.0将长程算法内部使用的扩展体积按相应因子处理,并应用slab修正。它不是把实际原子坐标或数据文件中的盒长直接乘3,也不替代后续动力学中的边界约束。

对这类设置,不要只把三维周期输入的z改为f后继续照算;核对所选kspace方法是否支持相应边界、slab方案和体系净电荷条件。slab与wire、nozforce用途不同,不能互相当作同一种边界修正。

3 四个实际条件#

目录 长程方法 slab设置
slab-ewald3 Ewald 1E-8 3.0,数值参照
slab-pppm3 PPPM 1E-8 3.0
slab-pppm4 PPPM 1E-8 4.0
slab-pppmauto PPPM 1E-8 auto,由当前算法选择

其他设置和坐标一致。auto示例在本次30Sep2026构建中实际运行,读原生日志查看本次选择值:

grep -E 'auto slab|grid =|estimated relative force accuracy' work/cases/slab-pppmauto/log.lammps
grep -A 1 'Step.*Atoms.*PotEng' work/cases/slab-ewald3/log.lammps
grep -A 1 'Step.*Atoms.*PotEng' work/cases/slab-pppm3/log.lammps

本次auto实际扩展因子约2.1726970,内部扩展z约43.453940Å。它由当前几何和精度选择,不是给所有体系固定套用的常数。

目录 整盒能量/kcal·mol⁻¹ 相对Ewald能量差/kcal·mol⁻¹ 力分量RMS差/kcal·mol⁻¹·Å⁻¹
slab-ewald3 -205.820563875 0.000E+00 0.000E+00
slab-pppm3 -205.820419322 1.446E-04 8.480E-07
slab-pppm4 -205.820264204 2.997E-04 7.216E-07
slab-pppmauto -205.820532649 3.123E-05 3.770E-07

实际薄层各PPPM设置相对同几何Ewald slab参照的整盒能量差与力分量RMS差

本例三个PPPM条件的力RMS差均小于1E-5 kcal/mol/Å;能量差并不随扩展因子从3到4而单调降低。accuracy针对力的误差估计,能量、网格和扩展距离要按实际目标一起检查,不能把某个因子较大直接等同于结果更准确。

实际8电荷薄层与16电荷周期对照结构

4 用于自己的表面或界面模型#

先检查总电荷、真空或非周期方向、原子与边界的距离,再选择相容的pair/kspace方法和slab设置;检查实际网格、原生精度估计、能量与逐原子力。若做动力学,还要根据物理模型设置边界或壁面,防止粒子离开允许区域。

压力输出依赖所用盒体积与边界定义,本例不把薄层三维压力直接解释为平衡液体压力。这里没有可极化电极、恒电势算法、溶剂采样或自由能,只说明中性固定点电荷层的静电边界操作。

提取与重画#

module load ase/3.29.0
python analyze.py work
python plot_results.py work
python check_results.py work
cat work/analysis/kspace-comparison.csv
ls work/figures

CSV列出方法、目标容差、显式修正、整盒总能、相对同几何Ewald参照的能量差、全部3N个笛卡尔力分量的RMS差、原生估计精度及总力残余。查看本文参考数据时将work改为reference。

完整参数与限制见kspace_modify slab。周期精度与MSM设置见长程静电与精度选择。

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

查看配图

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

100%查看原图 ↗