【LAMMPS学习】八、基础知识(5.3)Body particles体粒子

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.体粒子

概述:

在 LAMMPS 中,体粒子是广义的有限尺寸粒子。单个体粒子可以表示复杂的实体,例如离散点的表面网格、子粒子的集合、可变形物体等。请注意,LAMMPS 还支持其他类型的有限尺寸球形和非球面粒子,例如球体、椭球体、线段和三角形,但它们是比体粒子更简单的实体。有关所有这些粒子类型的一般概述,请参阅 Howto spherical 页面。

体粒子通过atom_style body 命令使用。它以body style作为参数。目前LAMMPS支持的body样式如下。第一列中的名称用作atom_style body命令的bstyle 参数。

nparticle

rigid body with N sub-particles
具有 N 个子粒子的刚体

rounded/polygon 圆形/多边形

2d polygons with N vertices
具有 N 个顶点的 2d 多边形

rounded/polyhedron 圆形/多面体

3d polyhedra with N vertices, E edges and F faces
具有 N 个顶点、E 个边和 F 个面的 3d 多面体

体样式决定了为每个主体存储哪些属性,以及如何使用它们来计算成对的主体/主体或键/非主体(点粒子)相互作用。下面描述了每种样式的更多细节。

将来可能会添加更多样式。有关如何向代码添加新主体样式的详细信息,请参阅page on creating new body styles

何时使用体粒子:

如果成对刚体之间的相互作用只是较简单粒子之间成对相互作用的总和,则不应使用体粒子来模拟由较简单粒子(例如点、球体、椭球体、线段、三角形粒子)组成的刚体。 LAMMPS 已经通过fix rigid ​​​​​​​命令支持这种模型。可以使用计算更简单粒子之间相互作用的众多对样式中的任何一种。fix rigid命令对刚体的运动进行时间积分。所有用于恒温、添加约束、执行输出等的标准 LAMMPS 命令都将在简单粒子上按预期运行。

相比之下,当使用主体粒子时,LAMMPS 将整个主体视为单个粒子,用于计算成对相互作用、构建邻居列表、在处理器之间迁移粒子、将粒子输出到转储文件等。这意味着对之间的相互作用物体的粒子或物体与非物体(点)粒子之间的粒子需要以适当的对样式进行编码。如果这样的配对样式要模仿固定刚性模型,则每次计算单个body/body​​​​​​​相互作用时,都需要循环两个物体内简单粒子对之间相互作用的整个集合。
因此,只有当粒子/粒子相互作用比
fix rigid命令已经可以计算的更复杂时,使用体粒子并开发这样的pair style​​​​​​​才有意义。例如,考虑具有以下一项或多项属性的粒子:

  • 由表面网格表示

  • 由几何实体的集合表示(例如平面+球体)

  • 可变形的

  • 引起碎裂的内应力

对于这些模型,粒子对之间的相互作用可能比简单的成对相互作用的总和更复杂。一个例子是具有相互渗透的平面表面的颗粒之间的接触力或摩擦力。同样,体粒子可以存储内部状态,例如用于计算断裂准则的应力张量。

这些是附加的 LAMMPS 命令,可与不同样式的体粒子一起使用

fix nve/body

integrate motion of a body particle in NVE ensemble
将体粒子的运动积分到 NVE 系综中

fix nvt/body

ditto for NVT ensemble NVT 系综也同上

fix npt/body

ditto for NPT ensemble NPT 系综也同上

fix nph/body

ditto for NPH ensemble NPH 系综也同上

compute body/local 计算主体/本地

store sub-particle attributes of a body particle
存储体粒子的子粒子属性

compute temp/body 计算温度/身体

compute temperature of body particles
计算体粒子的温度

dump local

output sub-particle attributes of a body particle
输出体粒子的子粒子属性

dump image

output body particle attributes as an image
将体粒子属性输出为图像

体样式​​​​​​​n粒子特性:

n粒子体样式将体粒子表示为具有可变数量 N 的子粒子的刚体。它作为体粒子的普通原型示例提供,尽管如上所述, fix rigid命令已经复制了其功能。

此体样式的atom_style体命令需要两个附加参数:

atom_style body nparticle Nmin Nmax
Nmin = minimum # of sub-particles in any body in the system
Nmax = maximum # of sub-particles in any body in the system

Nmin 和 Nmax 参数用于限制每个粒子内部使用的数据结构的大小。

read_data ​​​​​​​命令读取此正文样式的数据文件时,必须为数据文件的正文部分中的每个条目提供以下信息:

atom-ID 1 M
N
ixx iyy izz ixy ixz iyz
x1 y1 z1
...
xN yN zN

其中M = 6 + 3*N,N是体粒子中子粒子的数量。

整数线具有单个值 N。浮点线列出 6 个惯性矩,后跟 N 个子粒子(x1 到 zN)的坐标(作为 3N 个值)。这些值可以在任意多行中列出;有关详细信息,请参阅 read_data命令。

6 个惯性矩 (ixx,iyy,izz,ixy,ixz,iyz) 应与刚体当前围绕质心的方向一致。这些值是相对于模拟框 XYZ 轴的,而不是相对于刚体本身的主轴的。 LAMMPS 在内部执行后一种计算。

每个子粒子的坐标被指定为其距体粒子质心的 x,y,z 位移。粒子的质心位置由数据文件“原子”部分中的 x、y、z 值指定,物体粒子的总质量也是如此。

请注意,如果数据文件定义了通用三斜模拟框,则这些子粒子位移与方向相关,并且如上所述,应反映通用三斜框内体粒子的方向。

 pair_style body/nparticle命令可与此体样式一起使用来计算body/body 和 body/non-body​​​​​​​相互作用。

圆形/多边形体样式的特性:

圆形/多边形主体样式将主体粒子表示为具有可变数量的 N 个顶点的 2d 多边形。该样式只能用于2d模型;请参阅边界命令。请参阅pair_style body/rounded/polygon 页面,了解两个顶点带有圆角的正方形的图。还可以指定 N = 1(circle​​​​​​​)和 N = 2(rod with rounded ends​​​​​​​)的特殊情况。

这种主体样式的一种用途是用于二维离散元素模型,如 Fraige.​​​​​​​ 中所述。

与体样式 narticle 类似,此体样式的atom_style body 命令需要两个附加参数:

atom_style body rounded/polygon Nmin Nmax
Nmin = minimum # of vertices in any body in the system
Nmax = maximum # of vertices in any body in the system

Nmin 和 Nmax 参数用于限制每个粒子内部使用的数据结构的大小。

 read_data命令读取此正文样式的数据文件时,必须为数据文件的正文部分中的每个正文提供以下信息:

atom-ID 1 M
N
ixx iyy izz ixy ixz iyz
x1 y1 z1
...
xN yN zN
diameter

其中 M = 6 + 3*N + 1,N 是主体粒子的顶点数。

整数线具有单个值 N。浮点线列出 6 个惯性矩,后跟 N 个顶点的坐标(x1 到 zN)作为 3N 个值(每个值 z = 0.0),后跟一个直径值 = 围绕每个顶点的圆的圆直径。每个主体粒子的直径值可以不同。这些浮点值可以在任意多行中列出;有关详细信息,请参阅read_data ​​​​​​​命令。

注:重要的是,每个多边形体粒子的顶点按其周边的顺序列出,以便可以推断出边。 LAMMPS 不会检查情况是否如此。

6 个惯性矩 (ixx,iyy,izz,ixy,ixz,iyz) 应与刚体当前围绕质心的方向一致。这些值是相对于模拟框 XYZ 轴的,而不是相对于刚体本身的主轴的。 LAMMPS 在内部执行后一种计算。

每个顶点的坐标被指定为其距主体粒子质心的 x、y、z 位移。粒子的质心位置由数据文件“原子”部分中的 x、y、z 值指定。

例如,以下信息将指定一个方形粒子,其边长为 sqrt(2),圆角直径为 1.0。正方形的方向与 xy 坐标轴对齐,这与 6 个惯性矩一致:ixx iyy izz ixy ixz iyz = 1 1 4 0 0 0。请注意,在 2D 模拟中只有 Izz 很重要。

3 1 19
4
1 1 4 0 0 0
-0.7071 -0.7071 0
-0.7071 0.7071 0
0.7071 0.7071 0
0.7071 -0.7071 0
1.0

一根二维棒,其长度为 4.0,质量为 1.0,两端被直径为 0.5 的圆磨圆,指定如下:

1 1 13
2
1 1 1.33333 0 0 0
-2 0 0
2 0 0
0.5

直径为 3.0、质量为 1.0 的圆盘指定如下:

1 1 10
1
1 1 4.5 0 0 0
0 0 0
3.0

请注意,如果数据文件定义了通用三斜模拟框,则这些多边形顶点位移与方向相关,并且如上所述,应反映通用三斜框内体粒子的方向。

 pair_style body/rounded/polygon命令可与此体样式一起使用来计算主体/主体交互。 fix wall/body/polygon 命令可与此主体样式一起使用来计算体粒子与墙的相互作用。

圆形/多面体体样式的特性:

圆形/多面体主体样式将主体粒子表示为具有可变数量的 N 个顶点、E 边和 F 面的 3d 多面体。该样式只能用于3d模型;请参阅边界命令。请参阅“pair_style body/rounded/polygon”页面,了解两个顶点带有圆角的二维正方形的图。一个 3d 立方体在 8 个顶点和 12 个圆边上有圆球体,也是类似的。还可以指定 N = 1(球体)和 N = 2(带有圆端的杆)的特殊情况。

此主体样式适用于 3D 离散元素模型,如 Wang中所述。

与圆形/多边形主体样式类似,此主体样式的atom_style body命令需要两个附加参数:

atom_style body rounded/polyhedron Nmin Nmax
Nmin = minimum # of vertices in any body in the system
Nmax = maximum # of vertices in any body in the system

Nmin 和 Nmax 参数用于限制每个粒子内部使用的数据结构的大小。

当 read_data 命令读取此正文样式的数据文件时,必须为数据文件的正文部分中的每个条目提供以下信息:

atom-ID 3 M
N E F
ixx iyy izz ixy ixz iyz
x1 y1 z1
...
xN yN zN
0 1
1 2
2 3
...
0 1 2 -1
0 2 3 -1
...
1 2 3 4
diameter

其中 M = 6 + 3*N + 2*E + 4*F + 1,N 是主体粒子中的顶点数,E = 边数,F = 面数。对于 N = 1 或 2,格式更简单。 E 和 F 被忽略,并且没有列出边或面,因此 M = 6 + 3*N + 1。

整数线具有三个值:顶点数 (N)、边数 (E) 和面数 (F)。浮点线列出 6 个惯性矩,后跟 N 个顶点(x1 到 zN)的坐标(作为 3N 个值),后跟与 E 边的端点相对应的 2E 个顶点索引,然后是 4*F 顶点索引定义 F 面。最后一个值是直径值 = 围绕每个顶点的球体的圆直径。每个主体粒子的直径值可以不同。这些浮点值可以在任意多行中列出;有关详细信息,请参阅 read_data 命令。

请注意,顶点编号从 0 到 N-1(含)。每条边中 2 个顶点的顺序并不重要。面可以是三角形或四边形。在这两种情况下都必须指定 4 个顶点。对于三角形,第四个顶点是 -1。每个三角形或四边形面内的 4 个顶点应按右手定则排序,以便面的法向量从质心向外指向。对于面数超过4个顶点的多面体,应将复杂面拆分为多个简单面,每个简单面都是三角形或四边形。

注:如果一个面是四边形,那么它的 4 个顶点必须共面。 LAMMPS 不会检查情况是否如此。如果您有一个非平面的多面体四边形面(例如,顶点已随机移位的立方体),那么您应该将单个四边形面表示为两个三角形面。

6 个惯性矩 (ixx,iyy,izz,ixy,ixz,iyz) 应与刚体当前围绕质心的方向一致。这些值是相对于模拟框 XYZ 轴的,而不是相对于刚体本身的主轴的。 LAMMPS 在内部执行后一种计算。

每个顶点的坐标被指定为其距体粒子质心的 x、y、z 位移。粒子的质心位置由数据文件“原子”部分中的 x、y、z 值指定。

例如,以下信息将指定边长为 2.0、圆角直径为 0.5 的立方粒子。立方体的方向与 xyz 坐标轴对齐,这与 6 个惯性矩一致:ixx iyy izz ixy ixz iyz = 0.667 0.667 0.667 0 0 0。

1 3 79
8 12 6
0.667 0.667 0.667 0 0 0
1 1 1
1 -1 1
-1 -1 1
-1 1 1
1 1 -1
1 -1 -1
-1 -1 -1
-1 1 -1
0 1
1 2
2 3
3 0
4 5
5 6
6 7
7 4
0 4
1 5
2 6
3 7
0 1 2 3
4 5 6 7
0 1 5 4
1 2 6 5
2 3 7 6
3 0 4 7
0.5

3D 的一根杆,长度为 4.0,质量为 1.0,两端带有直径为 0.5 的圆,指定如下:

1 3 13
2 1 1
0 1.33333 1.33333 0 0 0
-2 0 0
2 0 0
0.5

直径为 3.0、质量为 1.0 的球体指定如下:

1 3 10
1 1 1
0.9 0.9 0.9 0 0 0
0 0 0
3.0

杆或球体的边和面的数量必须列出,但会被忽略。
请注意,如果数据文件定义了一般三斜模拟框,则这些多面体顶点位移与方向相关,并且如上所述,应反映一般三斜框内体粒子的方向。

pair_style body/rounded/polhedron命令可与此主体样式一起使用来计算主体/主体交互。  fix wall/body/polyhedron命令可与此体样式一起使用来计算主体粒子与墙壁的相互作用。

所有体样式的输出特性:

对于计算主体/本地和转储本地命令,其页面上描述的所有 3 种主体样式都会为体粒子中的 N 个(子粒子)顶点中的每一个生成一个数据。该数据有 3 个值:

1 = x position of vertex (or sub-particle)
2 = y position of vertex
3 = z position of vertex

这些值是模拟域内顶点的当前位置,而不是距体粒子本身质心 (COM) 的位移。这些值是使用当前 COM 和体粒子的方向计算的。

 dump image 命令及其 body 关键字可用于渲染体粒子。​​​​​​​

对于 n粒子体样式,每个体都被绘制为球体的集合,每个球体对应一个子粒子。每个球体的大小由 body 关键字的 bflag1 参数确定。 bflag2 参数被忽略。
对于圆形/多边形体样式,每个主体都绘制为具有 N 条线段的多边形。对于圆形/多面体样式,每个主体的每个面都绘制为具有 N 条线段的多边形。每条线段的绘制直径由 body 关键字的 bflag1 参数确定。 bflag2 参数被忽略。
请注意,对于圆角/多边形和圆角/多面体样式,线段是在顶点对之间绘制的。根据线段的直径,这可能与通过
 pair_style rounded/polygon 或 pair_style rounded/polyhedron命令计算的实体的物理范围略有不同。从概念上讲,对样式通过与放置在每个顶点位置上的指定直径的有限尺寸球体相切的线或平面来定义 2d 或 3d 实体的表面。

参考文献:

(Fraige) F. Y. Fraige, P. A. Langston, A. J. Matchett, J. Dodds, Particuology, 6, 455 (2008).

(Wang) J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular Matter, 13, 1 (2011).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587469.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python笔记:gensim进行LDA

理论部分:NLP 笔记:Latent Dirichlet Allocation (介绍篇)-CSDN博客 参考内容:DengYangyong/LDA_gensim: 用gensim训练LDA模型,进行新闻文本主题分析 (github.com) 1 导入库 import jieba,os,re from ge…

【C++】详解string类

目录 简介 框架 构造 全缺省构造函数 ​编辑 传对象构造函数 拷贝构造 析构函数 容量 size() capacity() empty() clear() reserve() ​编辑 resize() 遍历 检引用符号"[ ]"的重载 迭代器 begin() end() rbegin() rend(…

Spring Data JPA数据批量插入、批量更新真的用对了吗

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 前言 在前两篇文章已经介绍过,在使用Spring Data JPA时,DAO层的Respository通过继承J…

链表面试题1.

1,反转一个单链表 采用头插法即可 class Solution {public ListNode reverseList(ListNode head) {if(head null){return head;}ListNode cur head.next;head.next null;while(cur ! null){ListNode curN cur.next;cur.next head;head cur ;cur curN;}return …

websocket 单点通信,广播通信

Websocket协议是对http的改进,可以实现client 与 server之间的双向通信; websocket连接一旦建立就始终保持,直到client或server 中断连接,弥补了http无法保持长连接的不足,方便了客户端应用与服务器之间实时通信。 参…

ElasticSearch自动补全

一、拼音分词器: 当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项,如图: 这种根据用户输入的字母,提示完整词条的功能,就是自动补全了。 GET /_analyze {"text":"我爱螺蛳粉…

C++类和对象上篇

🐇 🔥博客主页: 云曦 📋系列专栏:[C] 💨路漫漫其修远兮 吾将而求索 💛 感谢大家👍点赞 😋关注📝评论 文章目录 📙前言📙1、面向过程…

高扬程消防水泵在火灾中的关键作用/恒峰智慧科技

在火灾这一无情的灾难面前,每一秒都至关重要。而在这一分一秒的较量中,高扬程消防水泵无疑扮演着举足轻重的角色。它不仅是灭火战斗的得力助手,更是保障人民生命财产安全的守护神。 高扬程消防水泵,顾名思义,其扬程远超…

VOS系统录音文件REC转MP3,REC录音转WAV与WAV转MP3具体项目中实现方式,以及占用空间变化!

前面讲解了VOS3000系统的录音REC转MP3的安装步骤,不清楚的,可以移步这里查看:http://t.csdnimg.cn/OXNT9 或者 点击这里查看安装步骤,下面继续讲下他们的使用方法,以及实际项目中的运用,首先我们需要明确我…

vue本地打包预览

vue官网介绍 serve官网 1、项目打包 npm run build2、安装serve npm install -g serve3、在项目的 dist 文件运行命令行 serve5、运行结果如下 6、在浏览器打开 在浏览器打开 http://localhost:3000 或者 http://192.168.0.198:3000 就可以看到打包的东西了

【高质量】2024五一数学建模C题保奖思路+代码(后续会更新)

你的点赞收藏是我后续更新的最大动力! 一定要点击文末的卡片,那是获取资料的入口! 你是否在寻找数学建模比赛的突破点? 作为经验丰富的数学建模团队,我们将为你带来2024 年五一数学建模(C题)…

展会资讯 | 现场精彩回顾 阿尔泰科技参展2024第23届中国国际(西部)光电产业!

2024第23届中国国际(西部)光电产业博览会,在成都世纪城新国际会展中心圆满落幕!来自各地的光电领域设备及材料厂商汇聚一堂,展示前沿技术及创新成果。 展会现场,来自全国各地的500余家企业就精密光学、信息…

电商技术揭秘文章合集(3)

相关系列文章 电商技术揭秘相关系列文章合集(1) 电商技术揭秘相关系列文章合集(2) 电商技术揭秘文章合集(3) 电商技术揭秘二十八:安全与合规性保障 电商技术揭秘二十九:电商法律…

esp32s3使用psram后音频播报不了的问题解决记录

idf.py menuconfig开启psram后会报错 提示需要打补丁: 根据提示切换到IDF_PATH目录,然后执行git apply %ADF_PATH%/ida_patches/idf5.0_freertos.patch打补丁。 再次编译提示如下错误: assert failed: spi_flash_disable_interrupts_cach…

电脑装了两个Win10系统,怎么修改其名称方便识别?

前言 有小伙伴在上一期的双系统教程上留言说怎么修改双系统引导时候显示的名称 不然看起来两个系统好像都没啥分别,如果是Windows10Windows11的方案还好说,但如果是两个Windows10或者是两个Windows11,有时候还真的很不好分辨。 万一想要启动…

OpenHarmony语言基础类库【@ohos.util (util工具函数)】

ohos.util (util工具函数) 该模块主要提供常用的工具函数,实现字符串编解码([TextEncoder]),[TextDecoder])、有理数运算([RationalNumber8])、缓冲区管理([LRUCache9])、范围判断&…

hdc不是内部或外部命令,也不是可运行的程序或批处理文件。【鸿蒙报错已解决】

文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结Bug解决方案寄语项目场景: 最近遇到了这个问题,看到网上也有人在询问这个问题,实操了很多网上的解决方案发现并不能解决这个Bug,所以我在解决这个问题后,总结了自己和其他人的解决经验,进行了整理,写…

全网最强JavaWeb笔记 | 万字长文爆肝JavaWeb开发——day08数据库Mybatis入门

万字长文爆肝黑马程序员2023最新版JavaWeb教程。这套教程打破常规,不再局限于过时的老套JavaWeb技术,而是与时俱进,运用的都是企业中流行的前沿技术。笔者认真跟着这个教程,再一次认真学习一遍JavaWeb教程,温故而知新&…

latex+vscode一直报错,配置文件json和环境变脸配置

1、json配置文件 {"latex-workshop.latex.tools": [{"name": "xelatex","command": "xelatex","args": ["-synctex1","-interactionnonstopmode","-file-line-error","%DOCF…

日期类的实现,const成员

目录 一&#xff1a;日期类实现 二&#xff1a;const成员 三&#xff1a;取地址及const取地址操作符重载 一&#xff1a;日期类实现 //头文件#include <iostream> using namespace std;class Date {friend ostream& operator<<(ostream& out, const Dat…