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

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.mzph.cn/bicheng/6274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.2 JavaScript语法

4.2.1 JavaScript大小写 在JavaScript中大小写是严格区分的,无论是变量、函数名称、运算符和其他语法都必须严格按照要求的大小写进行声明和使用。例如变量hello与变量HELLO会被认为是完全不同的内容。 4.2.2 JavaScript分号 很多编程语言(例如C、Java和…

helm安装 AWS Load Balancer Controller

1、创建AmazonEKSLoadBalancerControllerRole角色 亚马逊文档 创建文档 2)、使用 eksctl 创建 IAM 角色 a、安装eksctl eksctl安装文档 使用以下命令下载并提取最新版本的 eksctl curl --silent --location "https://github.com/weaveworks/eksctl/releases/l…

Flask教程2:flask高级视图

文章目录 add_url_rule类视图的引入装饰器的自定义与使用蓝图的使用url_prefix设置蓝图前缀 add_url_rule 欲实现url与视图函数的绑定,除了使用路由装饰器app.route,我们还可以通过add_url_rule(rule,endpointNone,view_funcNone)方法,其中&…

头歌实践教学平台:投影变换v2.0

第4关:视口变换与三视图 一. 任务描述 1. 本关任务 (1) 理解投影变换的方法; (2) 将main函数中的空白部分补充完整。 2. 输入 (1) 代码将自动输入一个边长为1的obj正方体模型,具体模型如下图: (2) 代码自动将模型投影到二维平面&#xf…

Java毕业设计 基于SSM SpringBoot vue宠物领养平台

Java毕业设计 基于SSM SpringBoot vue宠物领养平台 SSM 宠物领养平台 功能介绍 首页 图片轮播 新闻信息 新闻类型 新闻详情 宠物百科 宠物百科类型 宠物百科详情 宠物 宠物类型 宠物详情 立即领养 留言 论坛 发布帖子 登录 个人中心 宠物收藏 宠物领养订单 后台管理 登录注…

jsp校园商城派送系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 校园商城派送系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用serlvetdaobean mvc 模式,系统主要采用B/S模式 开发。开发环境为TOMCAT7.0,Myeclipse8.…

数据结构可视化(适合考研党)

废话不多说传送门 还在疑惑平衡二叉树、红黑树、B树、B树怎么插入构建的吗,不要慌张,这个网站会一步一步来演示.,听了咸鱼的课还不够,需要自己动手模拟一下各种数据结构的CRUD!!

Coze扣子开发指南:搭建一个免费的微信公众号AI客服

运营微信公众号的自媒体,现在借助Coze扣子可以非常好用而且免费的7*24客服了,完全不需要任何编程基础,操作非常简单: 打开Coze扣子,新建一个bot,输入bot名称、功能介绍和图标: 选择大语言模型&…

Python根据预设txt生成“你画我猜”题目PPT(素拓活动小工具)

Python根据预设txt生成“你画我猜”题目PPT(素拓活动小工具) 场景来源 去年单位内部的一次素拓活动,分工负责策划设置其中的“你画我猜”环节,网络上搜集到题目文字后,想着如何快速做成对应一页一页的PPT。第一时间想…

【LeetCode】树的DFS(前序、中序、后序)精选10题

目录 前序遍历: 1. 二叉树的所有路径(简单) 2. 求根节点到叶节点数字之和(简单) 3. 路径总和 III(中等) 中序遍历: 1. 递增顺序搜索树(简单) 2. 验证二…

【C++】深入剖析C++11 initializer_list 新的类功能 可变模板参数

目录 一、std::initializer_list 1、std::initializer_list是什么类型 2、std::initializer_list 的应用场景 ①给自定义容器赋值 ② 传递同类型的数据集合 二、新的类功能 1、默认成员函数 2、关键字default 3、关键字delete 三、可变参数模板 一、std::initialize…

Oracle 数据库全面升级为 23ai

从 11g 到 12c 再到 19c,今天,我们迎来了 23ai ! “ Oracle AI Vector Search allows documents, images, and relational data that are stored in mission-critical databases to be easily searched based on their conceptual content Ge…

Visual Studio C++ 的一个简单示例

Visual Studio 项目属性设置: 项目属性→C/C→常规→附加包含目录 C:\Intel\include\iconv\include;项目属性→链接器→常规→附加库目录 C:\Intel\include\iconv\lib;项目属性→链接器→输入→附加依赖项 iconv.lib;提示缺少"iconv.dll",…

架构设计 | 分布式与集群有什么区别

作为一名从业多年的程序员,对于分布式和集群这两种架构有着深入的了解。简单来说,分布式是将一个任务分拆到多个节点共同完成,而集群则是多个节点执行相同的任务。具体来说,分布式和集群的区别体现在以下几个方面: 一…

2024年钉钉群直播回放如何永久保存

工具我已经打包好了,有需要的自己取一下 链接:百度网盘 请输入提取码 提取码:1234 --来自百度网盘超级会员V10的分享 1.首先解压好我给大家准备好的压缩包 2.再把逍遥一仙下载器压缩包也解压一下 3.打开逍遥一仙下载器文件夹里面的M3U8…

开源的贴吧数据查询工具

贴吧数据查询工具 这是一个贴吧数据查询工具,目前仍处于开发阶段。 本地运行 要本地部署这个项目,请 克隆这个仓库并前往项目目录 git clone https://github.com/Dilettante258/tieba-tools.git cd tieba-tools安装依赖 pnpm install运行项目 np…

输入序列太长 gan CGAN

transformer序列长度大导致计算复杂度高 GAN 2. 训练过程 第一阶段:固定「判别器D」,训练「生成器G」。使用一个性能不错的判别器,G不断生成“假数据”,然后给这个D去判断。开始时候,G还很弱,所以很容易被…

Java并发编程面试问题与答案

1. 什么是线程安全? 答: 线程安全意味着多个线程可以同时访问一个类的实例而不引起任何问题或不一致的结果。线程安全的代码会通过同步机制来确保所有线程都能正确地访问共享资源。 2. 解释Java中的synchronized关键字。 答: synchronized…

three.js入门指南

WebGL和Three.js的概念 什么是WebGL WebGL是基于OpenGL ES 2.0的Web标准,可以通过HTML5 Canvas元素作为DOM接口访问。 也就是WebGL是作为OpenGL的网页端入口。它作为一个底层标准,然后我们可以通过JavaScript代码,在网页上实现三维图形的渲…

./build.sh:行1: g++: 未找到命令的错误问题在centos操作系统下面如何解决

目录 g: 未找到命令报错解释g: 未找到命令解决方法 centos操作系统,执行一个bash,bash命令很简单,就是用g编译一个C的程序。报告错误: ./build.sh:行1: g: 未找到命令 g: 未找到命令报错解释 这个错误表明在执行名为 build.sh 的…