8. 基础知识
此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。
8.1.通用基础知识
8.2. 设置入门
8.3. 分析入门
8.4. 力场入门
8.5. 软件包入门
8.5.1.有限尺寸球形和非球形粒子
8.5.2. 粒度模型
8.5.3.体粒子
8.5.4.黏合粒子(BMP)模型
8.5.5.极化模型
8.5.6. 绝热核/壳模型
Mitchell 和 Fincham 提出的绝热核壳模型是一种向系统添加极化性的简单方法。为了模拟离子的电子壳层,卫星粒子附着在离子上。通过这种方式,离子被分成核和壳,其中后者对静电环境产生反应,从而产生极化。请参阅 Howto 极化页面,了解 LAMMPS 中所有可用极化模型的讨论。
从技术上讲,外壳通过弹簧力 f = k*r 连接到核心,其中 k 是参数化弹簧常数,r 是核心和外壳之间的距离。核和壳的电荷加起来就是离子电荷,因此 q(离子) = q(核) + q(壳)。此设置引入了由 alpha = q(shell)^2 / k 给出的离子极化率 (alpha)。以类似的方式,离子的质量分布在核和壳上,其中核具有较大的质量。
要在 LAMMPS 中运行此模型,可以使用atom_stylefull,因为需要原子电荷和键。每种核/壳对都需要两种原子类型和一种键类型。核/壳对中的核和壳应通过提供弹簧力的谐波键彼此键合。例如,在 Examples/coreshell 中找到的 NaCl 数据文件具有以下格式:
432 atoms # core and shell atoms
216 bonds # number of core/shell springs4 atom types # 2 cores and 2 shells for Na and Cl
2 bond types0.0 24.09597 xlo xhi
0.0 24.09597 ylo yhi
0.0 24.09597 zlo zhiMasses # core/shell mass ratio = 0.11 20.690784 # Na core
2 31.90500 # Cl core
3 2.298976 # Na shell
4 3.54500 # Cl shellAtoms1 1 2 1.5005 0.00000000 0.00000000 0.00000000 # core of core/shell pair 1
2 1 4 -2.5005 0.00000000 0.00000000 0.00000000 # shell of core/shell pair 1
3 2 1 1.5056 4.01599500 4.01599500 4.01599500 # core of core/shell pair 2
4 2 3 -0.5056 4.01599500 4.01599500 4.01599500 # shell of core/shell pair 2
(...)Bonds # Bond topology for spring forces1 2 1 2 # spring for core/shell pair 1
2 2 3 4 # spring for core/shell pair 2
(...)
非库仑(例如 Lennard-Jones)成对相互作用仅在壳之间定义。库仑相互作用是在所有核和壳之间定义的。如果需要,可以在核心之间指定额外的键。
应该使用special_bonds命令来关闭核/壳对内的库仑相互作用,因为该相互作用是由键合弹簧设置的。这是通过使用special_bonds 命令来完成的,其权重为1-2 = 0.0,这是默认值。需要考虑是否必须根据分子拓扑调整special_bonds权重,因为壳的相互作用通过额外的键被绕过。
请注意,这种核/壳实现并不要求所有离子都被极化。如果需要,可以在没有卫星粒子的情况下混合核/壳对和离子。
由于核/壳模型允许核和壳之间的距离为 r = 0.0,因此需要使用带有“cs”后缀的对样式来实现有效的长程库仑校正。 CORESHELL 包中提供了几种这样的配对样式。详情请参阅本页。所有启用核/壳的对样式都需要使用远程库仑求解器,如 kspace_style 命令指定的那样。可以使用 PPPM 或 Ewald 求解器。
对于 NaCL 示例问题,使用以下对样式和键样式设置:
pair_style born/coul/long/cs 20.0 20.0
pair_coeff * * 0.0 1.000 0.00 0.00 0.00
pair_coeff 3 3 487.0 0.23768 0.00 1.05 0.50 #Na-Na
pair_coeff 3 4 145134.0 0.23768 0.00 6.99 8.70 #Na-Cl
pair_coeff 4 4 405774.0 0.23768 0.00 72.40 145.40 #Cl-Clbond_style harmonic
bond_coeff 1 63.014 0.0
bond_coeff 2 25.724 0.0
当使用绝热核/壳模型运行动力学时,应考虑以下问题。核和壳粒子的相对运动对应于极化,因此近似于壳的瞬时松弛,并且快速的核/壳弹簧频率确保了模拟过程中几乎恒定的内部动能。恒温器可以通过缩放内部动能来改变这种极化行为,这意味着外壳不会对其静电环境自由反应。因此,通常需要将核/壳对的相对运动(这是虚拟的自由度)与真实的物理系统解耦。为此,可以将compute temp/cs 命令与任何恒温器修复结合使用,例如fix nvt 或fix langevin。该计算使用核/壳对的质心速度来计算温度,并确保该速度是出于恒温目的而重新调整的。该计算也适用于具有核/壳对和非极化离子(没有附着卫星粒子的离子)的系统。 compute temp/cs 命令需要输入两组,一组用于核心原子,另一组用于壳原子。也可能包含在处理系统中的非极化离子不应包含在这两个组中,它们会被计算的组 ID(第二个参数)考虑在内。可以使用 group *type* 命令定义组。请注意,要使用此温度定义执行恒温器,应使用修复修改临时命令将计算分配给恒温器修复。同样,thermo_modify temp 命令可用于为整个系统输出该温度。
对于 NaCl 示例,可以按如下方式完成:
group cores type 1 2
group shells type 3 4
compute CSequ all temp/cs cores shells
fix thermoberendsen all temp/berendsen 1427 1427 0.4 # thermostat for the true physical system
fix thermostatequ all nve # integrator as needed for the berendsen thermostat
fix_modify thermoberendsen temp CSequ
thermo_modify temp CSequ # output of center-of-mass derived temperature
核/壳系统的压力是通过常规 LAMMPS 惯例通过将核和壳视为单独的粒子来计算的。对于压力的热输出以及恒压器的应用,有必要根据默认温度使用额外的压力计算,并将其指定为 fixmodify 和thermo_modify 中的第二个参数,结果是:
(...)
compute CSequ all temp/cs cores shells
compute thermo_press_lmp all pressure thermo_temp # pressure for individual particles
thermo_modify temp CSequ press thermo_press_lmp # modify thermo to regular pressure
fix press_bar all npt temp 300 300 0.04 iso 0 0 0.4
fix_modify press_bar temp CSequ press thermo_press_lmp # pressure modification for correct kinetic scalar
如果使用计算 temp/cs,则核和壳的解耦相对运动理论上应该是稳定的。然而,数值涨落可能会给系统带来很小的动量,这在长轨迹上很明显。因此,建议在平衡系统时结合使用修复动量命令和计算 temp/cs 以防止任何漂移。
当初始化具有核/壳对的系统的速度时,还希望不将能量引入到核/壳粒子的相对运动中,而仅将质心速度分配给核/壳粒子对。这可以通过使用velocity create命令的bias关键字并将compute temp/cs命令分配给velocity命令的temp关键字来完成,例如
velocity all create 1427 134 bias yes temp CSequ
velocity all scale 1427 temp CSequ
为了保持核/壳对的正确极化率,内部运动的动能应保持几乎恒定。因此,弹簧力和质量比的选择需要确保核/壳对内的两个原子的相对运动比它们的质心速度快得多。这使得壳能够立即有效地对静电环境做出反应,并限制能量传入或传出核/壳振荡器。这种快速移动也决定了可以使用的时间步长。
绝热核/壳模型的主要文献表明,核/壳对的快速相对运动仅允许微不足道的能量转移到环境中。所提到的能量转移通常会导致总能量随时间的推移而发生小幅漂移。可以使用compute chunk/atom 和compute temp/chunk 命令监控该内部能量。然后可以使用变量命令的 sum() 特殊函数对每个核/壳对的内部动能求和。或者可以使用 fix ave/time 命令对它们进行时间/平均并输出。要使用这些命令,每个核心/外壳对必须定义为“块”。如果每个核/壳对定义为其自己的分子,则分子 ID 可用于定义块。如果核彼此结合形成更大的分子,则可以通过使用 read_data 命令读取的数据文件中的特殊字段为每个原子分配核/壳 ID,通过固定属性/原子来识别块。然后可以通过compute property/atom命令访问该字段,以用作compute chunk/atom命令的输入以将核心/外壳对定义为块。
例如,如果核/壳对是唯一的分子:
read_data NaCl_CS_x0.1_prop.data
compute prop all property/atom molecule
compute cs_chunk all chunk/atom c_prop
compute cstherm all temp/chunk cs_chunk temp internal com yes cdof 3.0 # note the chosen degrees of freedom for the core/shell pairs
fix ave_chunk all ave/time 10 1 10 c_cstherm file chunk.dump mode vector
例如,如果存在核/壳对和其他分子:
fix csinfo all property/atom i_CSID # property/atom command
read_data NaCl_CS_x0.1_prop.data fix csinfo NULL CS-Info # atom property added in the data-file
compute prop all property/atom i_CSID
(...)
日期文件中的附加部分的格式如下:
CS-Info # header of additional section1 1 # column 1 = atom ID, column 2 = core/shell ID
2 1
3 2
4 2
5 3
6 3
7 4
8 4
(...)
参考文献:
(Mitchell and Fincham) Mitchell, Fincham, J Phys Condensed Matter, 5, 1031-1038 (1993).
(Fincham) Fincham, Mackrodt and Mitchell, J Phys Condensed Matter, 6, 393-404 (1994).