百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Lammps 初学者——in 文件中文解析

zhezhongyun 2024-12-03 06:33 43 浏览

1.初始化

Units:

Units 命令是用来设定模拟的原子类型。

Units style(lammps 现在提供的有 style=LJ、real、metal、si、cgs、electron)

LJ 是硬球模型

Real 是真实的原子模型

Metal 是金属原子模型Si 是硅(半导体)原子模型Cgs

Electron 是电子模型

Dimension:

Dimension 命令是用来定义模拟的维度,默认情况为三维。

Dimension N (N=2,3)

Boundary:

Boundary 命令是用来设定模拟的边界条件。

Boundary x y z (x,y,z=p,s,f,m 四种类型中的一种或者两种)

P 是周期性边界条件

S 是自由边界条件(但是具有收缩性)

F 是固定边界条件

M 是具有最小值的自由边界条件(但是具有收缩性)

Atom-style:

Atom-style 定义了模拟体系中的原子属性。

Delete-atoms: Pair-style:

Pair-style 定义了相互作用力场类型,即势函数。

  1. 原子定义

1、

Read-data/read-restart:

Read-data 或 read-restart 为从 data 或 restart 文件中读取内容来定义原子。

2、

Lattice:

lattice 是用来原子类型构建模型晶格结构。

Lattice style scale keyword values...

Style 表示点阵类型,点阵类型有 none、sc、bcc、fcc、hcp、diamond、sq、

sq2、hex、custom。

Scale 表示构建的点阵类型的单位长度

Keyword 表示后面可以追加 0 个或者多个关键字,关键字有 origin、orient、

spacing、a1、a2、a3、basis。各关键字意思为:

Region:

Create-box:

Create-box 命令用于在 region box 命令指定的区域内创建一个模拟的盒子。

Create_box N region-ID

N 为使用该原子类型进行模拟

Region-ID 为使用区域的 ID 使用模拟域

Create-atoms:

Create-atoms 用于在所创建的模拟的盒子中填充某种原子。

Create_atoms type style args keyword values ...

  1. 设定: 力场系数

Pair-coeff: 模拟参数

Neighbor

Neighbor 是定义

Neighbor skin style

Skin 为

Style 可取 bin、nsq、multi

Neighbor-modify: Group: Timestep:

Timestep 是定义模拟的时间步长。

Timestep dt

Dt 为时间步长(时间单位),默认为 1ps

Reset-timestep:

Fix

Fix 为定义对部分原子或者对系综的操作。

http://lammps.sandia.gov/doc/fix.html Fix ID group-ID style args

ID=指定的操作名称编号(如 1、2、3…….) Group-ID=制定操作范围的原子(如 all……)

Style=操作内容,如何操作

Args=相关操作内容的相关操作参数

Fix-nvt:恒定 N(原子数量)、V(体积)、T(温度)对时间积分Fix-npt:恒定 N、P、T 对时间积分

Unfix:

Compute/compute-modify: 输出选项

Thermo:

Thermo 命令用于定义每隔一定时间步长输出一次采样内容。

Thermo N

每隔 N 个时间步长输出一次采样内容至屏幕或者 log 文件

Thermo_style:

Thermo_style 命令主要是用来说明采样的内容,即输出到屏幕或者 LOG

文件中的内容。(http://lammps.sandia.gov/doc/thermo_style.html)

Thermo_style style args

Style=one、multi、custom

Args=特定的参数列表One args=none Multi args=none

Custom args=list of attributes

Possible attributes=step、elaosed、elaplong、dt、cpu、tpcpu、spcpu、

Atoms、temp、press、pe、ke、otatal、enthalpy、

Evdwl、ecoul、epair、ebond、eangle、edihed、eimp、

Emol、elong、etail、

Vol、lx、ly、lz、xlo、xhi、ylo、yhi、zlo、zhi、

Xy、xz、yz、xlat、ylat、zlat、

Pxx、pyy、pzz、pxy、pyz、pxz、

Fmax、fnorm、

Cella、cellb、cellc、cellalpha、cellbeta、cellgamma、

c_ID、c_ID[I]、c_ID[I][J]、

f_ID、f_ID[I]、f_ID[I][J]、V_name

Dump:

Dump 命令主要是用来输出计算后单个原子的相关信息的。

Dump ID group-ID style N file args

ID:自己给这个 dump 命令定义的一个代号(自定义)

group-ID:那些信息需要被输出的原子群(预先定义好 group) Style:类型

N:每经过多少时间步输出信息

File: 输 出 名 称Args:相关参数(每个类型不同)

Restart:

  1. 运行

Run: Minimize:

例一

units metal # 单位为 lammps 中的 metel 类型

boundary p p p # 周期性边界条件

atom_style atomic # 原子模式

lattice fcc 3.61 # Cu 的晶格常数 3.61

region box block 0 4 0 4 0 4 # x,y,z 各方向上的晶胞重复单元数,也即区域大小

create_box 1 box # 将上述区域指定为模拟的盒子create_atoms 1 box # 将原子按晶格填满盒子pair_style eam # 选取 Cu 的 EAM 势作为模型pair_coeff * * Cu_u3.eam # EAM 势文件名称

run 0 # 运行 0 步,仅为启动 lammps 的热力学数据计算

variable E equal pe # 定义变量 E 为系统总势能

variable N equal atoms # 定义变量 N 为系统总原子数

print "the number of atoms & system energy now are $N $E" # 打印信息

create_atoms 1 single 2.45 2.05 2.05 # 在该位置插入一个原子

min_style sd # 能量最小化模式,sd

minimize 1.0e-12 1.0e-12 1000 1000 # 能量最小化参数,指数越大最小化程度越深

print "interstitial introduced, minimized: $N atoms, energy is $E"

fix 1 all nvt 100 100 100 drag 0.2 # nvt 系综,原子数、体积和温度保持不变;T=100K

timestep 0.005 # 步长 0.005fs run 1000 # 运行 1000 步

print "nvt performed, temperature up: $N atoms, total energy is $E"

fix 1 all nvt 100 0.0001 100 drag 0.2 # nvt 系综,温度由 100K 到 0.0001K

run 1000 # 运行 1000 步

print "nvt performed, temperature down: $N atoms, total energy is $E" compute 3 all pe/atom # 计算每个原子的势能

compute 4 all ke/atom # 计算每个原子的动能

compute 5 all coord/atom 3.0 # 计算每个原子的近邻原子数

dump 1 all custom 1 dump.atom id xs ys zs c_3 c_4 c_5 # 将信息写入 dump.atom min_style sd

minimize 1.0e-12 1.0e-12 10000 10000 # 再次能量最小化

print "the final state: $N atoms, total energy is $E" # 打印信息

~

例二

boundary p s s # 边界条件,拉伸方向

是周期性,其余是自由边界;如果是薄膜拉伸则是两个周期性,块体则是三个周期性

units metal #单位制定义为

metal

atom_style atomic #原子类型

neighbor 2.0 bin #截断半径相关的东西

neigh_modifydelay 1 check yes # 邻近原子列表更新速度

#create geometry

lattice fcc 3.61 # 定义晶胞为 fcc,晶格常数 3.61A

region box block 0 30 0 3 0 3 #定义一个长方体区域叫 box,长

30,宽和高是 3

create_box 1 box #创建了这样一个 box

create_atoms 1 box #在 box 里创建了一种原子

mass 1 63.546 #定义这种原子的质量

是 63.546

# potentials

pair_style eam # 定义势函数是 EAM

pair_coef * * Cu_u3.eam #势所需要的参数在此文件里

#define groups

region 1 block INF 1 INF INF INF INF # 定义了一个叫

1 的区域

group left region 1

#定义此区域里的原子叫 left

region 2 block 29 INF INF INF INF INF #定义了一个叫 2 的区域

group right region 2 #

定义此区域里的原子叫 right

group boundary union left right #定义 left+ right = boundary

group mobile subtract all left # 定义

mobile= all - left

# initialvelocities

velocity left set 0.0 0.0 0.0 # 设置

原子初速度为 0

computep all pressure thermo_temp # 计算应力,计算结果记为 p

variable pressx equal c_p[1] #定义变量 pressx=c_p[1],c_p[1]

的意思是 p 里第一个值

variable pressy equal c_p[2] #定义变量 pressy=c_p[2],c_p[2]

的意思是 p 里第二个值

variable pressz equal c_p[3] #定义变量 pressz=c_p[3],c_p[3]

的意思是 p 里第三个值

thermo_style custom step temp etotal press v_pressx v_pressy v_pressz vol

dump 1 all atom 1000 dump.tensile # 输出结果到

dump.tensile

minimize 1.0e-6 1.0e-6 1000 1000 # 驰豫

fix 1 left setforce 0.0 NULL NULL #固定左边的原子

fix 2 all npt 1.0 1.0 1.0 aniso 0.0 0.0 NULL NULL NULL NULL 10.0 drag 1.0

thermo 1000 #

每 1000 步输出一次结果

timestep 0.002 #

时间步长 0.002ps

run 10000

#运行 10000 步

unfix2

fix 3 all nve

fix 4 all temp/rescale 100 1.0 1.0 5 1.0

fix 5 all deform 1000 x erate 0.002 units box #设置沿 x 方向拉伸,应变率为 0.002(1/ps)

compute s all stress/atom #计算每个原子上的应力,计算结果记为 s

compute strea all reduce sum c_s[1] #将 s 里第一个值求和,计算结果记为 strea

variable stressa equal c_strea/vol # 定义变量 stressa= strea/vol, vol 是体积

compute streb all reduce sum c_s[2] variable stressb equalc_streb/vol compute strec all reduce sum c_s[3] variable stressc equal c_strec/vol

thermo_style custom step tempetotal press v_stressa v_stressb v_stressc vol run 300000

最后,有相关需求欢迎通过微信公众号联系我们。

相关推荐

JPA实体类注解,看这篇就全会了

基本注解@Entity标注于实体类声明语句之前,指出该Java类为实体类,将映射到指定的数据库表。name(可选):实体名称。缺省为实体类的非限定名称。该名称用于引用查询中的实体。不与@Tab...

Dify教程02 - Dify+Deepseek零代码赋能,普通人也能开发AI应用

开始今天的教程之前,先解决昨天遇到的一个问题,docker安装Dify的时候有个报错,进入Dify面板的时候会出现“InternalServerError”的提示,log日志报错:S3_USE_A...

用离散标记重塑人体姿态:VQ-VAE实现关键点组合关系编码

在人体姿态估计领域,传统方法通常将关键点作为基本处理单元,这些关键点在人体骨架结构上代表关节位置(如肘部、膝盖和头部)的空间坐标。现有模型对这些关键点的预测主要采用两种范式:直接通过坐标回归或间接通过...

B 客户端流RPC (clientstream Client Stream)

客户端编写一系列消息并将其发送到服务器,同样使用提供的流。一旦客户端写完消息,它就等待服务器读取消息并返回响应gRPC再次保证了单个RPC调用中的消息排序在客户端流RPC模式中,客户端会发送多个请...

我的模型我做主02——训练自己的大模型:简易入门指南

模型训练往往需要较高的配置,为了满足友友们的好奇心,这里我们不要内存,不要gpu,用最简单的方式,让大家感受一下什么是模型训练。基于你的硬件配置,我们可以设计一个完全在CPU上运行的简易模型训练方案。...

开源项目MessageNest打造个性化消息推送平台多种通知方式

今天介绍一个开源项目,MessageNest-可以打造个性化消息推送平台,整合邮件、钉钉、企业微信等多种通知方式。定制你的消息,让通知方式更灵活多样。开源地址:https://github.c...

使用投机规则API加快页面加载速度

当今的网络用户要求快速导航,从一个页面移动到另一个页面时应尽量减少延迟。投机规则应用程序接口(SpeculationRulesAPI)的出现改变了网络应用程序接口(WebAPI)领域的游戏规则。...

JSONP安全攻防技术

关于JSONPJSONP全称是JSONwithPadding,是基于JSON格式的为解决跨域请求资源而产生的解决方案。它的基本原理是利用HTML的元素标签,远程调用JSON文件来实现数据传递。如果...

大数据Doris(六):编译 Doris遇到的问题

编译Doris遇到的问题一、js_generator.cc:(.text+0xfc3c):undefinedreferenceto`well_known_types_js’查找Doris...

网页内嵌PDF获取的办法

最近女王大人为了通过某认证考试,交了2000RMB,官方居然没有给线下教材资料,直接给的是在线教材,教材是PDF的但是是内嵌在网页内,可惜却没有给具体的PDF地址,无法下载,看到女王大人一点点的截图保...

印度女孩被邻居家客人性骚扰,父亲上门警告,反被围殴致死

微信的规则进行了调整希望大家看完故事多点“在看”,喜欢的话也点个分享和赞这样事儿君的推送才能继续出现在你的订阅列表里才能继续跟大家分享每个开怀大笑或拍案惊奇的好故事啦~话说只要稍微关注新闻的人,应该...

下周重要财经数据日程一览 (1229-0103)

下周焦点全球制造业PMI美国消费者信心指数美国首申失业救济人数值得注意的是,下周一希腊还将举行第三轮总统选举需要谷歌日历同步及部分智能手机(安卓,iPhone)同步日历功能的朋友请点击此链接,数据公布...

PyTorch 深度学习实战(38):注意力机制全面解析

在上一篇文章中,我们探讨了分布式训练实战。本文将深入解析注意力机制的完整发展历程,从最初的Seq2Seq模型到革命性的Transformer架构。我们将使用PyTorch实现2个关键阶段的注意力机制变...

聊聊Spring AI的EmbeddingModel

序本文主要研究一下SpringAI的EmbeddingModelEmbeddingModelspring-ai-core/src/main/java/org/springframework/ai/e...

前端分享-少年了解过iframe么

iframe就像是HTML的「内嵌画布」,允许在页面中加载独立网页,如同在画布上叠加另一幅动态画卷。核心特性包括:独立上下文:每个iframe都拥有独立的DOM/CSS/JS环境(类似浏...