LAMMPS单层石墨烯拉伸(velocity)

本文主要把之前学习石墨烯拉伸velocity拉伸做个总结。

一、模拟环境参数设置

units        metal      # 使用"metal"单位,这是 LAMMPS 中的一种长度单位
dimension    3          # 模拟的维度为三维空间
boundary     s p p      # 周期性边界条件:s 表示周期性边界条件,p 表示非周期性边界条件(periodic、permeable、periodic)
atom_style   atomic     # 原子类型为 atomic,表示每个原子作为一个粒子而不考虑其内部结构
atom_modify  map array sort 100 2.0  # 原子修改:map 将原子映射到处理器上,array 创建数组以存储原子信息,sort 每隔 100 步排序一次原子,2.0 是排序截止半径
neighbor     3.0 bin    # 设置邻居列表参数:3.0 是邻居搜索半径,bin 使用网格作为邻居列表构建方法
neigh_modify every 1 delay 0 check yes  # 修改邻居列表行为:every 1 表示每个时间步更新一次,delay 0 表示立即执行更新,check yes 表示在每个时间步检查原子是否移出模拟区域

二、定义全局变量


variable temperature        equal 300     #初始温度
variable relaxtemperature   equal 300     #弛豫温度
variable tensiontemperature equal 300     #拉伸温度
variable tstep              equal 0.001   #步长
variable thermalstep        equal 100     #输出模拟结果信息
variable dumpstep           equal 100     #参数输出步长
variable medoldumpstep      equal 1000    #模型输出步长
variable relaxtime          equal 10000   #弛豫时长
variable tensiontime        equal 10000000#拉伸时长
variable pressure           equal 0       #压强控制
variable strain             equal 0.3     #拉伸应变
variable velocityrate       equal 0.1      #velocity拉伸应变
variable fixed              equal 10      #固定端

三、创建/读取模型

# 边界层分组:将类型为 1 的原子分组为 graphene
group       graphene type 1

# 使用变量定义边界层的最大和最小 x 坐标
variable    xmax equal bound(graphene,xmax)-${fixed}  # 边界层最大 x 坐标减去 ${fixed}
variable    xmin equal bound(graphene,xmin)+${fixed}  # 边界层最小 x 坐标加上 ${fixed}

# 确定边界层分界点坐标
region      left block INF ${xmin} INF INF INF INF units box  # 定义左边界层的区域
group       left region left  # 将左边界层的区域分组

region      right block ${xmax} INF INF INF INF INF units box  # 定义右边界层的区域
group       right region right  # 将右边界层的区域分组

# 边界层、变形层分组:将边界层定义为左右两个区域的并集
group       boundary union left right  # 将左右两个边界层的区域并集作为边界层分组

# 将边界层之外的所有原子作为变形层分组
group       mobile subtract all boundary  

# 设置边界层原子类型:将左边界层的原子类型设置为 2,将右边界层的原子类型设置为 3
set         group left type 2  
set         group right type 3  

# 设置所有原子的质量为 12.011150
mass         * 12.011150 

四、势函数

pair_style     airebo 3.0 
pair_coeff     * * CH.airebo C C C

五、能量最小化、温度初始化和步长

min_style       cg  #也可以选取sd
minimize        1.0e-10 1.0e-10 10000  10000
velocity        all create  ${temperature}  534567 dist gaussian  units box
timestep        ${tstep}

六、固定两端


#固定边界层
velocity    left set 0.0 0.0 0.0 units box
velocity    right set 0.0 0.0 0.0 units box
fix         left left setforce 0 0 0
fix         right right setforce 0 0 0

七、npt弛豫

compute  2 all pe/atom    #计算每个原子的势能
compute  pe mobile reduce sum c_2 #对变形区域原子势能进行求和
variable PE equal "c_pe"

thermo          ${thermalstep}
thermo_style    custom  step  temp press lx  ly  lz pe ke  etotal
fix             1  all npt temp ${relaxtemperature} ${relaxtemperature} 0.1 y ${pressure} ${pressure} 10 z ${pressure} ${pressure} 10 drag 1
fix             pe all print ${dumpstep} "${PE} " file PE2.txt screen no
dump            1  all custom   ${medoldumpstep}   relax_x2.lammpstrj  id  type  x  y  z
run             ${relaxtime}
undump          1    #取消fix、dump设定,步数清零
unfix           1
reset_timestep  0

八、输出参数计算

variable        num      equal count(mobile)   #计算变形区域原子数目
variable        toval    equal (lx-2*${fixed})*ly*3.35   #计算系统总体积,单层石墨烯厚度为0.335nm
variable        vol      equal ${toval}     #体系的初始体积
variable        vatom    equal v_vol/v_num  #单个原子体积
 
variable        l_x       equal lx-2*${fixed}
variable        lx0      equal ${l_x}   
variable        l_y       equal ly
variable        ly0      equal ${l_y}
variable        fixed2      equal 2*${fixed}
variable        xstrain  equal "(lx - v_fixed2 - v_lx0) / v_lx0" #计算x方向应变
variable        ystrain  equal "(ly - v_ly0) / v_ly0" #计算y方向应变
 
compute     stress      mobile stress/atom NULL          #计算体系中单原子应力
compute     xalls       mobile reduce sum c_stress[1]    #计算体系中各方向应力
compute     yalls       mobile reduce sum c_stress[2]
compute     zalls       mobile reduce sum c_stress[3]
compute     xyalls      mobile reduce sum c_stress[4]
variable    xstress     equal   "1.0e-4 * c_xalls/v_toval"   
variable    ystress     equal   "1.0e-4 * c_yalls/v_toval"
variable    zstress     equal   "1.0e-4 * c_zalls/v_toval"
variable    xystress    equal   "1.0e-4 * c_xyalls/v_toval"

九、velocity拉伸


#拉伸结果输出
thermo          ${thermalstep}
thermo_style custom step press temp lx ly lz vol v_xstrain v_ystrain v_xstress  v_ystress pe  ke etotal
#拉伸时系综设置
fix             2 all nvt temp ${tensiontemperature} ${tensiontemperature} 0.01
#设置两端边界层双向移动
velocity    right set ${velocityrate} 0 0
velocity    left set -${velocityrate} 0 0
#设置中间变形区域速度梯度
velocity    mobile ramp vx -${velocityrate} ${velocityrate} x ${xmin} ${xmax} sum yes units box
#启动运算
fix             4  all   ave/time 1 ${dumpstep} ${dumpstep}   v_xstrain  v_ystrain   v_xstress  v_ystress   file  x.txt
dump            2  all   custom ${medoldumpstep}  load_x.lammpstrj id  type  x  y  z c_stress[1] c_stress[2] c_stress[3] c_stress[4] 
fix             5  all   halt   ${dumpstep}    v_xstrain >  ${strain}  error  continue #拉
run             ${tensiontime}

十、完整代码及结果

1、代码

units        metal      #单位为lammps 中的metel 类型
dimension    3          #模拟的维度 三维
boundary     s p p      #周期边界条件
atom_style   atomic     #原子类型自动
atom_modify  map array sort 100 2.0
neighbor     3.0 bin
neigh_modify every 1 delay 0 check yes

variable temperature        equal 300     #初始温度
variable relaxtemperature   equal 300     #弛豫温度
variable tensiontemperature equal 300     #拉伸温度
variable tstep              equal 0.001   #步长
variable thermalstep        equal 100     #输出模拟结果信息
variable dumpstep           equal 100     #参数输出步长
variable medoldumpstep      equal 1000    #模型输出步长
variable relaxtime          equal 10000   #弛豫时长
variable tensiontime        equal 10000000#拉伸时长
variable pressure           equal 0       #压强控制
variable strain             equal 0.3     #拉伸应变
variable velocityrate       equal 0.1      #velocity拉伸应变
variable fixed              equal 10      #固定端

read_data		gp.lammpstrj extra/atom/types 2


#边界层分组
group       graphene type 1
variable    xmax equal bound(graphene,xmax)-${fixed}
variable    xmin equal bound(graphene,xmin)+${fixed}
#确定边界层分界点坐标
region      left block INF ${xmin} INF INF INF INF units box
group       left region left
region      right block ${xmax} INF INF INF INF INF units box
group       right region right
#边界层、变形层分组
group       boundary union left right
group       mobile subtract all boundary
#设置边界层原子类型
set         group left type 2
set         group right type 3

mass         * 12.011150 

pair_style     airebo 3.0 
pair_coeff     * * CH.airebo C C C

min_style       cg  #也可以选取sd
minimize        1.0e-10 1.0e-10 10000  10000
velocity        all create  ${temperature}  534567 dist gaussian  units box
timestep        ${tstep}

#固定边界层
velocity    left set 0.0 0.0 0.0 units box
velocity    right set 0.0 0.0 0.0 units box
fix         left left setforce 0 0 0
fix         right right setforce 0 0 0


compute  2 all pe/atom    #计算每个原子的势能
compute  pe mobile reduce sum c_2 #对变形区域原子势能进行求和
variable PE equal "c_pe"

thermo          ${thermalstep}
thermo_style    custom  step  temp press lx  ly  lz pe ke  etotal
fix             1  all npt temp ${relaxtemperature} ${relaxtemperature} 0.1 y ${pressure} ${pressure} 10 z ${pressure} ${pressure} 10 drag 1
fix             pe all print ${dumpstep} "${PE} " file PE2.txt screen no
dump            1  all custom   ${medoldumpstep}   relax_x2.lammpstrj  id  type  x  y  z
run             ${relaxtime}
undump          1    #取消fix、dump设定,步数清零
unfix           1
reset_timestep  0



variable        num      equal count(mobile)   #计算变形区域原子数目
variable        toval    equal (lx-2*${fixed})*ly*3.35   #计算系统总体积,单层石墨烯厚度为0.335nm
variable        vol      equal ${toval}     #体系的初始体积
variable        vatom    equal v_vol/v_num  #单个原子体积
 
variable        l_x       equal lx-2*${fixed}
variable        lx0      equal ${l_x}   
variable        l_y       equal ly
variable        ly0      equal ${l_y}
variable        fixed2      equal 2*${fixed}
variable        xstrain  equal "(lx - v_fixed2 - v_lx0) / v_lx0" #计算x方向应变
variable        ystrain  equal "(ly - v_ly0) / v_ly0" #计算y方向应变
 
compute     stress      mobile stress/atom NULL          #计算体系中单原子应力
compute     xalls       mobile reduce sum c_stress[1]    #计算体系中各方向应力
compute     yalls       mobile reduce sum c_stress[2]
compute     zalls       mobile reduce sum c_stress[3]
compute     xyalls      mobile reduce sum c_stress[4]
variable    xstress     equal   "1.0e-4 * c_xalls/v_toval"   
variable    ystress     equal   "1.0e-4 * c_yalls/v_toval"
variable    zstress     equal   "1.0e-4 * c_zalls/v_toval"
variable    xystress    equal   "1.0e-4 * c_xyalls/v_toval"



#拉伸结果输出
thermo          ${thermalstep}
thermo_style custom step press temp lx ly lz vol v_xstrain v_ystrain v_xstress  v_ystress pe  ke etotal
#拉伸时系综设置
fix             2 all nvt temp ${tensiontemperature} ${tensiontemperature} 0.01
#设置两端边界层双向移动
velocity    right set ${velocityrate} 0 0
velocity    left set -${velocityrate} 0 0
#设置中间变形区域速度梯度
velocity    mobile ramp vx -${velocityrate} ${velocityrate} x ${xmin} ${xmax} sum yes units box
#启动运算
fix             4  all   ave/time 1 ${dumpstep} ${dumpstep}   v_xstrain  v_ystrain   v_xstress  v_ystress   file  x.txt
dump            2  all   custom ${medoldumpstep}  load_x.lammpstrj id  type  x  y  z c_stress[1] c_stress[2] c_stress[3] c_stress[4] 
fix             5  all   halt   ${dumpstep}    v_xstrain >  ${strain}  error  continue #拉伸终止
run             ${tensiontime}

二、结果

若有问题欢迎讨论,会持续更新改正

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

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

相关文章

商店数据(八)

目录 57.后台权限表 58.推荐记录表 ​59.系统上传资源表 ​60.角色表 ​61.订单结算表 62.店铺表 63.店铺认证表 64.店铺申请(移动端)表 57.后台权限表 CREATE TABLE wat_privilgeid (privilegeod int(11) NOT NULL AUTO_INCREMENT COMMENT 自增…

数据结构——哈希表的平均查找长度

我们要首先知道哈希表是干什么的,哈希表并不是为了单纯存储数据的,他并不会减小存储这些数据使用的空间,而是为了实现快速的数据查找,插入和删除操作。map就可以使用哈希表来实现,所以map可以实现利用键来快速访问到值…

2024年最新 Windows\Linux 后台运行程序注解

一、前言 有时候需要在后台运行程序,查了查网上现有的程序有些运行不了,跑通了之后简单记录一下,为后面的同学躺一下雷 1、Linux 系统 Linux后台运行进程时,通常使用如下方法: (1)程序挂后台…

Spring Bean依赖注入-Spring入门(二)

1、SpringBean概述 在Spring中,一切Java对象都被视为Bean,用于实现某个具体功能。 Bean的依赖关系注入的过程,也称为Bean的装配过程。 Bean的装配方式有3种: XML配置文件注解Java类 Spring中常用的两种装配方式分别是基于XML的…

[嵌入式系统-52]:RT-Thread:RT-Thread Studio工程的文件结构

目录 一、RT-Thread Studio概述 二、RT-Thread Studio工程架构 2.1 目录结构 2.2 软件包管理 2.3 硬件电路板信息 2.3 可执行文件elf信息 2.4 系统头文件 2.5 应用程序目录 2.6 硬件驱动程序 2.7 RT Thread操作系统程序 2.7.1 component:应用程序组件 …

PD虚拟机和双系统哪个好 Mac建议装双系统吗

在当今数字化时代,对于部分使用Mac电脑的用户来说,选择如何在系统中运行Windows或其他操作系统能节省大量精力。Parallels Desktop(PD)虚拟机和双系统是两种常见的选择,它们各自具有优势和限制。下面我们来看看PD虚拟机…

【MyBatis】(动态SQL <if> 标签 <trim>标签 <where>标签<set>标签<foreach>标签<include>标签)

文章目录 动态SQL< if > 标签< trim> 标签< where> 标签< set> 标签< foreach> 标签< include> 标签 动态SQL 在MyBatis框架中&#xff0c;动态SQL是一个强大的特性。它允许我们根据不同的条件动态的组装SQL语句&#xff0c;能够灵活的发…

【pycharm】调试模式中四个常用按钮介绍

【pycharm】调试模式中四个常用按钮介绍 在 PyCharm 的调试模式中&#xff0c;有四个常用的按钮&#xff0c;它们的功能如下&#xff1a; Step Over (F8)&#xff1a;单步执行&#xff0c;但在遇到函数调用时&#xff0c;不会进入函数内部&#xff0c;而是将整个函数作为一步执…

UVa12313 A Tiny Raytracer

UVa12313 A Tiny Raytracer 题目链接题意分析AC 代码 题目链接 UVA - 12313 A Tiny Raytracer 题意 给出 《训练指南》题意翻译 本题的任务是实现一个小型光线追踪渲染器。场景由若干三角形网格&#xff08;triangle mesh&#xff09;组成&#xff0c;有且仅有一个点光源&…

三苯基膦以及副产物的处理方式

参考文献&#xff1a; Easy Removal of Triphenylphosphine Oxide from Reaction Mixtures by Precipitation with CaBr2 | Organic Process Research & Development (acs.org) Triphenylphosphine Oxide Removal from Reactions: The Role of Solvent and Temperature |…

分享一些实用的工具

1、amCharts5&#xff1a;模拟航线飞行/业务分布图/k线/数据分析/地图等 网址&#xff1a; JavaScript mapping library: amCharts 5https://www.amcharts.com/javascript-maps/ Demo地址&#xff1a;Chart Demos - amChartshttps://www.amcharts.com/demos/#maps 他分为amC…

[华为OD] 给航天器一侧加装长方形或正方形的太阳能板 100

给航天器一侧加装长方形或正方形的太阳能板&#xff08;图中的红色斜线区域&#xff09;&#xff0c;需要先安装两个支 柱&#xff08;图中的黑色竖条&#xff09;&#xff0c;再在支柱的中间部分固定太阳能板。但航天器不同位置的支柱长度 不同&#xff0c;太阳能板的安装面…

学习笔记-数据结构-线性表(2024-04-18)- 单向链表选择排序

试以单向链表为存储结构实现简单选择排序的算法。 实现递增排序&#xff0c;首先选择一个元素作为第一个比较值&#xff0c;遍历其他所有的元素&#xff0c;如果发现其他元素中有比它小的元素&#xff0c;则交换两个元素&#xff0c;这样每一趟都能找到符合要求的最小值 正经…

selenium 自动化测试课上实操指南1——百度搜索

1.环境准备 下面的所有资源可以从超星班级资料中下载&#xff0c;机房的同学在收到的文件夹中可以找到文件 非本校同学&#xff0c;免费加入学银在线课程&#xff0c;就可以在资料 根目录 > 02 课件新 > week09 web自动化测试02 里下载本次实操资料 1&#xff09;安…

K8S探针分享

一&#xff0c;探针介绍 1 探针类型 livenessProbe&#xff1a;存活探针&#xff0c;用于判断容器是不是健康&#xff1b;如果探测失败&#xff0c;Kubernetes就会重启容器。 readinessProbe&#xff1a;就绪探针&#xff0c;用于判断是否可以将容器加入到Service负载均衡池…

使用Tortoise 创建远程分支

1。首先创建本地分支branch1&#xff0c;右键tortoise git->创建分支&#xff0c;输入分支名称branch1&#xff0c;确定。 2。右键tortoise git->推送&#xff0c;按下图设置&#xff0c;确定&#xff0c;git会判断远程有没有分支branch1&#xff0c;如果没有会自动创建…

C++学习随笔(11)——vector

本章我们来学习一下vector&#xff01; 目录 1.vector的介绍及使用 1.1 vector的介绍 1.2 vector的使用 1.2.1 vector的定义 1.2.2 vector iterator 的使用 1.2.3 vector 空间增长问题 1.2.4 vector 增删查改 1.2.5 vector 迭代器失效问题。 1.vector的介绍及使用 1…

ANSYS WorkBench基础说明

1引入CAE产品设计流程 2有限元法简介 有限元法的基本概念:把一个原来是连续的物体划分为有限个单元&#xff0c;这些单元通过有限个节点相互连接&#xff0c;承受与实际载荷等效的节点载荷&#xff0c;根据力的平衡条件进行分析&#xff0c;并根据变形协调条件把这些单元重新组…

【Redis 开发】全局ID生成器

全局ID生成器 为了增加ID的安全性&#xff0c;我们可以不直接使用Redis自增的数值&#xff0c;而是拼接一些其他信息&#xff1a; ID的组成部分&#xff1a; 符号位:1bit,一直为0 时间戳:31bit&#xff0c;一秒为单位&#xff0c;可以使用69年 序列号:32bit&#xff0c;秒内…

idea 通过maven构建无法使用@SpringBootApplication

问题描述 SpringBootApplication标红&#xff0c;没有提示&#xff0c;无法启动springboot使用maven构建。通过idea的标准版本构建 原因 springboot构建启动依赖spring-boot-maven-plugin idea的标准版本没有指定构建版本&#xff0c;然后在springboot-parent里面没有指定默…
最新文章