LAMMPS data文件创建工具–moltemplate

一 介绍长久以来,lammps的数据文件构建就是一个大问题(对我来说)。一方面,LAMMPS的数据格式比较特殊,很多软件不能直接导出; 另一方面小分子到大分子的变换,大分子在系统中的排布和大分子中的拓扑结构都需要牵扯很多的精力。经过长时间的试错,我算是终于找到一个比较合理且简约的技术栈,可以直接生成lammps所需的in文件和data文件。

第二部分是基本单元数据 这里面存储这一个片段的信息# – file matrix.lt –

import “forcefield.lt”

Matrix inherits ForceField{

}

}
第三部分是操作部分 在这个文件中我们可以对基本单元进行操作,同时也是程序执行的入口# – file system.lt – #

import “forcefield.lt”
import “matrix.lt”

m1 = new Matrix [3].move(0,0,3)

在最简单的情况下,我们仅需要这三个文件就可以描述一个系统的初始化状态,然后执行命令行使用moltemplate生成实际文件:

moltemplate.sh system.lt
得到:

system.data
system.in
system.in.init
system.in.settings
如果出了bug还会出现生成树output_ttree

三 语法教程1 forcefield.lt# – example of a forcefield.lt inscript – #
ForceField{

}1.1 write_once() 和 write()

write_once(“file_name”){
text_content
}

每出现一次write_once(),就会新生成一个文件,整个程序执行过程中此命令仅仅执行一次。注意,In 和 Data 开头是系统保留关键词,将会被合并到in文件和data文件中,而特别离谱的才会被单独创立。比如,In Init就是个保留文件名,如果你输入In init就会被强制要求改成大写。接下来会有专门的专题来介绍保留文件名的特殊之处。还有一些文件名会被合并,比如Data Mass、Data boundary。花括 内的文本将会被转移到文件内,同时计数器都会被替换。write则是可以在一个文本块内出现多次,可以被重复执行的单元(通过new)

1.2 import 和 inheritsimport

关键字要求系统去查找需要引用的文件的位置inherits 表示本结构单元中的变量名称(比如bond type名MM来自于继承的单元)

1.3 forcefield 和 By Type

write_once(“Data Angles By Type”){
@angle: type @atom:atom1 @atom:atom2 @atom:atom3 @bond:b1 @bond:b2
}

这里介绍moltemplate最终要的功能之一。众所周知我们的逻辑结构不单单包括2-body的键接,还有3-body,4-body的angle和dihedral甚至还有improper。如果自己写程序去搜索拓扑结构的话会非常费事。因此这里给出了一个功能,只要你给出了结构的键接信息,那么就可以自动去查找所有的angle和dihedral和improper。其中语法也十分清晰明了,第一,指明这个angle的三个原子类型,第二,指明两个键接类型,仅此就可以遍历所有原子,标记出所有的角。

2 unit.lt# – example of a unit.lt inscript – #

import “forcefield.lt”

Matrix inherits ForceField{

}

}
}2.2 和 @ 计 数 器 如 上 面 的 和@计数器如上面的 @atom:1和@atom:1,都被成为变量。前面的符 是计数器,后面叫做类名(category),冒 后则是变量名,我们很快就会知道这个为什么要这么写。计数器分为两种,$是动态计数器,每增加一个,在生成的时候都会赋给一个唯一的id,@是静态计数器,每一个类名在全局只会唯一给一个type。简单说,就是静态计数器和系统复杂度有关,动态计数器和系统规模有关。2.3 变量作用域上面提到的变量有两种形式,一种是全名,另一种是简名。简名通常是在一个结构对象(molecule-object)内,不会产生歧义。而全名就厉害了:@cpath/catname:lpath

cpath:category的作用域,通常省略以表示全局。除了有极为特殊的要求之外不需要管
catname:类名
lpath:包括变量名和可选的指明那个分子的index

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月5日
下一篇 2021年3月5日

相关推荐