【LAMMPS学习】八、基础知识(5.6)绝热核/壳模型

devtools/2024/9/24 0:38:39/

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).

 


http://www.ppmy.cn/devtools/31870.html

相关文章

ruoyi漏洞总结

若依识别 黑若依 :icon hash"-1231872293 绿若依 :icon hash"706913071” body" 请通过前端地址访 " body" 认证失败,无法访问系统资源 " 如果页面访问显示不正常,可添加默认访问路径尝试是否显示正常 /login?redi…

linux jmeter ant下载并安装【2024-亲测】

环境 centos7 一、下载jmeter 在这里插入代码片wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.tgz --no-check-certificate解压 tar -zxvf apache-jmeter-5.6.3.tgz复制到安装目录、设置环境变量 vim /etc/profile添加环境变量,路径改成…

Hdfs小文件治理策略以及治理经验

小文件是 Hadoop 集群运维中的常见挑战,尤其对于大规模运行的集群来说可谓至关重要。如果处理不好,可能会导致许多并发症。Hadoop集群本质是为了TB,PB规模的数据存储和计算因运而生的。为啥大数据开发都说小文件的治理重要,说HDFS 存储小文件…

MATLAB 集成

MATLAB 集成(Integration) 集成处理两种本质上不同的问题。 在第一种类型中,给出了函数的导数,我们想找到函数。因此,我们从根本上扭转了分化的过程。这种反向过程称为反微分,或者找到原始函数&#xff0…

QT-构造函数

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造成员变量的初始化值,内存空间等 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置…

OpenCV(四)—— 车牌号识别

本节是车牌识别的最后一部分 —— 车牌字符识别,从一个完整的车牌图片到识别出车牌上的字符大致需要如下几步: 预处理:将车牌图片灰度化、二值化,并去除识别时的干扰因素,比如车牌铆钉字符分割:将整个车牌…

C++关联容器2——关联容器特有操作

关联容器操作 除了http://t.csdnimg.cn/osoJZ 中列出的类型,关联容器还定义了下表中列出的类型。这些类型表示容器关键字和值的类型。 关联容器额外的类型别名 key_type此容器类型的关键字类型mapped_type每个关键字关联的类型;只适用于mapvalue_type对…

后台架构总结

前言 疫情三年,全国各地的健康码成为了每个人的重要生活组成部分。虽然过去一年,但是回想起来任然历历在目。 今天我就通过当时基于小程序的健康码架构,来给大家讲一下如何基于java,springboot等技术来快速搭建一个后台业务系统…