lampps手册范本.docx
《lampps手册范本.docx》由会员分享,可在线阅读,更多相关《lampps手册范本.docx(15页珍藏版)》请在冰豆网上搜索。
lampps手册范本
一、各种文件的介绍:
1infile:
建立该文件以便程序的写入
2logfile:
写入状态信息(iftheswitchisused?
)
3screenfile 决定结果的是否进行屏幕输出
4varnamefile定义一个变量,name指变量名,可为字母也可为字符串,形式$x/${abc}
二、屏幕输出:
结果显示在屏幕上,同时在logfile中。
开始前LAMMPS计算出所需的存储空间,运行中每隔几个时步显示一次热力学状态,直至输出最终状态。
Looptimeof49.002on2procsfor2004atoms 该部分显示了几个大类的计算时间
Pairtime(%)=35.0495(71.5267)
Bondtime(%)=0.092046(0.187841)
Kspcetime(%)=6.42073(13.103)
Neightime(%)=2.73485(5.5811)
Commtime(%)=1.50291(3.06703)
Outpttime(%)=0.013799(0.0281601)
Othertime(%)=2.13669(4.36041)
Nlocal:
1002ave,1015max,989min 每个处理器中特定原子的数目
Histogram:
1000000001
Nghost:
8720ave,8724max,8716min
Histogram:
1000000001
Neighs:
354141ave,361422max,346860min
Histogram:
1000000001
Total#ofneighbors=708282
Aveneighs/atom=353.434
Avespecialneighs/atom=2.34032
Numberofreneighborings=42
Dangerousreneighborings=2
当运用了能量最小化命令进行能量最小化时,还将出现如下所示语句:
Minimizationstats:
Einitial,next−to−last,final=−0.895962−2.94193−2.94342 (显示初终能量以及next-to-last循环的能量)
Gradient2−norminit/final=1920.7820.9992 (给出能量梯度,即所有原子的受力)
Gradientinf−norminit/final=304.2839.61216 2-form是力向量的长度,inf-form是最大构成?
Iterations=36 循环次数
Forceevaluations=177 对力进行评定的次数
当程序中有kspace_stylelong−rangeCoulombicssolve,将会显示以下语句:
FFTtime(%ofKspce)=0.200313(8.34477) 完成3dFFT计算的时间及在总时间中占的百分比
FFTGflps3d1d−only=2.310749.19989
每秒执行的浮点指令次数(flops)为5N*log(2N),N为3维晶体中的节点数
The3drateiswithcommunication;the1drateiswithout(justthe1dFFTs).
在GPU(图形处理单元)上的运行
三、指令系统介绍(*)
一般来说指令的顺序并不重要,胆在以下几种情况中必须注意:
1 LAMMPS并不是全部读完所有指令才执行,而是读一行执行一次,因此下面的两组语句是不同的:
timestep0.5 以下的两个模拟其步长均为0.5fmsec
run100
run100
run100 第一个模拟采用缺省值步长为1fmsec
timestep0.5
run100 第二个采用步长为0.5fmsec
2 某些指令只在其他指令之后才生效,如要得到系统温度必须先进行各种定义
3 若A指令在B之前,B可以引用A定义的变量
四、语法规则
在LAMMPS中要区分大小写,一般指令名称用小写字母,文件及用户定义ID
Strings用大写。
LAMMPS对每行语句的语法要求如下:
1 当语句太长一行放不下时,在语句一行结束的时候输入字符“”表示下一行的语句接着上一行继续。
2 在#之后输入的字符认为是评论语句,是无用的,但有例外
3 紧跟在$后定义变量(之前讲过)
4 单词间用空格隔开
5 第一个词为指令名,接下来的字母全都为自变量(arguments)
6 Ifyouwanttextwithspacestobetreatedasasingleargument,itcanbeenclosedindoublequotes
五、输入的语句结构
一个普通的LAMMPS程序通常由以下四部分组成:
1初始化
2原子定义
3设定
4进行模拟
初始化阶段:
设定所需参数,相关各项命令,引入所需的力场参数
相关命令介绍:
1 unitscommand
语句形式:
unitsstyle
·style=ljorrealormetalorsiorcgsorelectron
Examples:
unitsmetal
unitslj
该语句定义了单元类型,除了LJ类型,其他物理常量来自于某网,定义实际单元的热能=4.184J。
而在LJ类型中,所有变量都是无单位的(参考义龙的论文)实际量换算成简化单位量有系列公式。
以下列出了换算关系及其它各种类型中所使用的标准单位。
Thiscommandcannotbeusedafterthesimulationboxisdefinedbyaread_dataorcreate_boxcommand.
缺省状态默认为LJ类型
2 语句形式:
dimensionN
·N=2or3 例如:
dimension2
一般缺省为3d模拟,2d模拟的话要在建立simulationbox之前进行设定(其余省略)
COMMANDSLISTEDBYCATEGORY
以下列出的LAMMPS命令以按类分好,其分类情况如下:
初始化指令:
atom_modify,atom_style,boundary,dimension,newton,processors,units
原子定义指令:
create_atoms,create_box,lattice,read_data,read_restart,region,replicate
力场指令:
angle_coeff,angle_style,bond_coeff,bond_style,dielectric,dihedral_coeff,dihedral_style,improper_coeff,improper_style,kspace_modify,kspace_style,pair_coeff,pair_modify,pair_style,pair_write,special_bonds
设定指令:
communicate,dipole,group,mass,min_modify,min_style,neigh_modify,neighbor,reset_timestep,run_style,set,shape,timestep,velocity
FIXES fix,fix_modify,unfix
Computes:
compute,compute_modify,uncompute
Output:
dump,dump_modify,restart,thermo,thermo_modify,thermo_style,undump,write_restart
Actions:
delete_atoms,delete_bonds,displace_atoms,displace_box,minimize,prd,run,temper
Miscellaneous:
clear,echo,if,include,jump,label,log,next,print,shell,variable
六howtodiscussions()
重启一个模拟。
有3种方法继续长的LAMMPS程序。
在同一个程序中可多次使用运行命令。
每次运行都会接着上一条运行指令(runcommand)进行。
Binaryfile 使用restartcommand将binaryfiles存入硬盘中,之后用read-restart命令可将binaryfile读出。
或者可转为textdatafiles,经read-data命令读出。
restart2data
涉及到的命令:
1 runcommand
syntax
runNkeywordvalues……(N=#oftimesteps;zeroormorekeyword/valuepairsmaybeappended;keyword=uptoorstartorstoporpreorpostorevery)
Examples:
run10000 #运行10000步;N=0意味着直接把现系统的热力学值输出
run1000000upto #从当前开始一直运行至upto所指定的数值(该语句意为运行至10000000步止)
run100start0stop1000
run1000prenopostyes
run100000start0stop1000000every1000"printProteinRg=$r"
run100000every1000NULL
(补充说明fix指令:
Syntax:
fixIDgroup−IDstyleargs
·ID=user−assignednameforthefix ID是用户自己定义的名字,便于通过fix定义
·group−ID=IDofthegroupofatomstoapplythefixto
·style=oneofalonglistofpossiblestylenames(seebelow)
·args=argumentsusedbyaparticularstyle
Examples:
fix1allnve
fix3allnvttemp300.0300.00.01
fixminetopsetforce0.0NULL0.0
fix指令的用途是对一组原子进行定义,可以用于更新原子的位置、速度、控制温度、加常力、施加边界条件等。
当两个或更多fix在同一过程中作用时,根据程序中的先后顺序执行fix指令。
Fix指令可通过unfix指令来消除,形式为unfixfix-ID)
对于run100start0stop1000这个语句来说,主要与fix语句配合使用。
fix1allnvt200.0300.01.0 这两个指令的功能是在接下来的1000步运行中,每
run1000 步的温度都要从200度升到300度
fix1allnvt200.0300.01.0 对于左侧的一组指令,温度随着从0到10000步的执行
run1000start0stop10000 逐渐升至300.0度,是一个发生在整个过程的渐变行为
run1000start0stop10000
...
run1000start0stop10000(共10个)
至于preandpost大概是这样的,preno的意思是跳过初始设定阶段,如果以下的计算是承接之前运行命令的话(意思是采用之前的参数) 但是如果该run指令是第一个指令是,该设定会被忽略。
注意:
当两次运行指令之间使用了修改设定值的命令时(比如fix等),preno是不允许的,必须重新设定,否则报错
若是postno,则跳过fulltimingsummary,输出one-linesummarytiming
Every的作用是将一个run分成一系列较短的runs
variableqequalx
run6000every2000"printCoord=$q"
每运行2000步输出一次某原子的x坐标值
Default:
Theoptiondefaultsarestart=thecurrenttimestep,stop=currenttimestep+N,pre=yes,andpost=yes. 在run语句中的缺省值
2restartcommand(将binaryfiles存入硬盘) restart文件是lammps的一种输出文件形式
Syntax:
restart0 N=writearestartfileeverythismanytimesteps
restartNroot root=filenametowhichtimestep#isappended
restartNfile1filefile1,file2=twofullfilenames,togglebetweenthemwhenwritingfile
Examples:
restart0
restart1000poly.restart
restart1000restart.*.equil
restart10000poly.%.1poly.%.2
restart0意味着不输出restartfiles。
与dump文件一样,restart不能包含两个wildcardcharacters(即通配符)。
若filename中含有*号,则它会被目前的值所代替(该情况只在仅有一个filename的情况下成立)
1 之后这些binaryfiles可通过指令read-restart来读出
在此我们给出2条程序,用于读出binaryrestartfile或者是converteddatafile,之后发出一条新的运行指令,这条指令从上次运行结束的地方开始执行。
这些阐释了在新程序中必须进行哪些设定。
细节请参照之后对read-start和read-data命令的讲解。
当程序中附有如下这行语句时:
restart50tmp.restart
它在运行过程中会产生两个binaryfiles,即tmp.restart.50和tmp.restart.100
该程序可以被用于读出第一个restartfile以及重新运行最后50个步长。
read_restarttmp.restart.50
neighbor0.4bin
neigh_modifyevery1delay1
fix1allnve
fix2alllangevin1.01.010.0904297
timestep0.012
run50
在此需指出以下这些指令不需再重复使用,因为在restart-file中已经进行了必要的设定,这样的指令包括:
units,atom_style,special_bonds,pair_style,bond_style,但是必须使用如下的指令,因 为这些指令的参数并未在restartfile中进行设定,这样的指令有neighbor,fix,timestep.
如果你真的用该程序运行restartedrun,你会注意到在第50步时与热力学数据相符(如果你在原程序中写入了thermo50命令),但是在第100步时两者并不相符。
这是因为fixlangevin命令使用随机数的原因。
除了上面提到的这个方法,还可用以下工具将restartfile转换为datafile:
restart2datatmp.restart.50tmp.restart.data
之后该程序可用于重新运行最后50步:
unitslj
atom_stylebond
pair_stylelj/cut1.12
pair_modifyshiftyes
bond_stylefene
special_bonds0.01.01.0
read_datatmp.restart.data
neighbor0.4bin
neigh_modifyevery1delay1
fix1allnve
fix2alllangevin1.01.010.0904297
timestep0.012
reset_timestep50
run50
需要注意的是几乎所有在最初的in.chain程序中进行的设定必须在被重新设定,除了pair-coeff与bond-coeff,因为新的datafile列出了力场系数。
另外,reset-timestep命令用于告知LAMMPS当前的工步,该值被储存在restartfiles中,不在datafiles中。
4.22d模拟
运用dimmension命令定义一个2d模拟过程。
运用boundary命令建立一个Z方向的周期性的长方体,这是缺省值。
如果使用createbox来定义一个模拟的长方体,将z方向的尺寸设定为有限值,这样create-atoms命令可以可将长方体的原子在z平面上平铺显示(即将三维原子显示在二维平面上)。
Createbox1-1010-1010-0.250.25
如果使用readcommand命令来读出文件中的原子坐标,将“zlozhi”的值设为finitebutnarrow,与create-box命令的设定类似。
对于file中的每个原子,都为其确定一个z坐标值,这样一来便可确保其落在所设定的z方向的边界。
(该处如何为每个原子的z坐标赋值?
)
在最终进行fix定义得时候使用fixenforce2d命令,以此来保证在每步执行完毕后能将速度、力等z方向的值清零。
(用法:
fix5allenforce2d,将速度、力等z方向的值清零的目的是保证在2d模拟中原子保持在其最初设定的z坐标值出不变) 将该fix作为最后一个fix命令的原因是将其它fix命令引起的力的变化均清零。
LAMMPS中给出的许多程序实例都是针对二维模拟的。
需要注意的是:
LAMMPS中的一些模型将粒子看做延展的球体,而不是单纯得一个点。
在二维模拟中,粒子仍被看做球体而不是盘状物,这意味着它们的惯性的处理与三维模型是相同的。
4.3CHARMMandAMBER力场
AMBER力场主要适用于较小的蛋白质,核酸,多糖等生化分子,此力场的标准形式
CHARM力场,此力场可应用于研究许多分子系统,通常皆可得到与实验值相近的结构。
该立场的的作用形式为:
有许多分子动力学的方法可以计算CHARMM与AMBER力场,其中只有部分能够用于LAMMPS。
一个力场由两部分组成:
一个是用于定义该力场的公式,另一个是用于特殊系统的参数(特殊系统值得是什么?
)
这里我们只讨论应用于LAMMPS的公式。
利用read-data指令或者在输入程序中利用pair-coeff或者bond-coeff在输入数据文件中进行系数的设定。
后文对该类工具进行了详述,这些工具可用于CHARMM或是AMBER力场中用于力场系数的值以及将它们的输出值转换为LAMMPS的输入值。
4.4通过一个程序运行多个模拟
这点可通过多种方式来实现,具体请看对于各个命令的程序说明书。
如果说“多次模拟“意味着继续运行之前的某个模拟,那么你只需要多次使用run这个命令,例如以下的程序片段:
Units lj
Atom-styleatomic
Read-datadata.lj
Run10000
Run10000
Run10000
Run10000
Run10000
以上这段程序将会对同一个系统进行连续的50000步模拟。
如果你想要一个接一个的运行完全不同的模拟,可在这些模拟之间使用clear命令以此来重新初始化LAMMPS,例如下面的一个程序段:
unitslj
atom-styleatomic
read-datadata.lj
run10000
clear
unitslj
atom-styleatomic
read-datadata.lj.new
run10000
以上这个程序段将顺序地运行两个完全独立的模拟。
对于多个独立的模拟而言,可以使用variables以及next和jump命令多次循环运行同一个程序段,在运行过程中改变程序的设定值。
例如以下这个程序段,以in.polymer命名
Variabledindexrun1run2run3run4run5run6run7run8
Shellcd$d
Read-datadata.polymer
Run10000
Shellcd..
Clear
Nextd
Jumpin.polymer
以上这段程序将运行不同目录下的8个模拟,在每个目录中都运用了一个data.polymer文档。
运用相同的概念可以对位于8个不同温度值条件下的系统进行模拟,只需运用一个温度变量并且将输出的结果储存在不同的log及dump文档中,例如:
Variablealoop8
Variabletindex0.80.850.90.951.01.051.11.15
Loglog.$a
Read-dat.polymer
Velocityallcreate$