lampps手册范本Word下载.docx
《lampps手册范本Word下载.docx》由会员分享,可在线阅读,更多相关《lampps手册范本Word下载.docx(15页珍藏版)》请在冰点文库上搜索。
8720ave,8724max,8716min
1000000001
Neighs:
354141ave,361422max,346860min
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
第一个模拟采用缺省值步长为1fmsec
timestep0.5
第二个采用步长为0.5fmsec
2
某些指令只在其他指令之后才生效,如要得到系统温度必须先进行各种定义
3
若A指令在B之前,B可以引用A定义的变量
四、语法规则
在LAMMPS中要区分大小写,一般指令名称用小写字母,文件及用户定义ID
Strings用大写。
LAMMPS对每行语句的语法要求如下:
当语句太长一行放不下时,在语句一行结束的时候输入字符“”表示下一行的语句接着上一行继续。
在#之后输入的字符认为是评论语句,是无用的,但有例外
紧跟在$后定义变量(之前讲过)
4
单词间用空格隔开
5
第一个词为指令名,接下来的字母全都为自变量(arguments)
6
Ifyouwanttextwithspacestobetreatedasasingleargument,itcanbeenclosedindoublequotes
五、输入的语句结构
一个普通的LAMMPS程序通常由以下四部分组成:
1初始化
2原子定义
3设定
4进行模拟
初始化阶段:
设定所需参数,相关各项命令,引入所需的力场参数
相关命令介绍:
unitscommand
语句形式:
unitsstyle
·
style=ljorrealormetalorsiorcgsorelectron
Examples:
unitsmetal
unitslj
该语句定义了单元类型,除了LJ类型,其他物理常量来自于某网,定义实际单元的热能=4.184J。
而在LJ类型中,所有变量都是无单位的(参考义龙的论文)实际量换算成简化单位量有系列公式。
以下列出了换算关系及其它各种类型中所使用的标准单位。
Thiscommandcannotbeusedafterthesimulationboxisdefinedbyaread_dataorcreate_boxcommand.
缺省状态默认为LJ类型
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
涉及到的命令:
runcommand
syntax
runNkeywordvalues……(N=#oftimesteps;
zeroormorekeyword/valuepairsmaybeappended;
keyword=uptoorstartorstoporpreorpostorevery)
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
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度
对于左侧的一组指令,温度随着从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的一种输出文件形式
restart0
N=writearestartfileeverythismanytimesteps
restartNroot
root=filenametowhichtimestep#isappended
restartNfile1filefile1,file2=twofullfilenames,togglebetweenthemwhenwritingfile
restart0
restart1000poly.restart
restart1000restart.*.equil
restart10000poly.%.1poly.%.2
restart0意味着不输出restartfiles。
与dump文件一样,restart不能包含两个wildcardcharacters(即通配符)。
若filename中含有*号,则它会被目前的值所代替(该情况只在仅有一个filename的情况下成立)
之后这些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
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步:
atom_stylebond
pair_stylelj/cut1.12
pair_modifyshiftyes
bond_stylefene
special_bonds0.01.01.0
read_datatmp.restart.data
reset_timestep50
需要注意的是几乎所有在最初的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
以上这段程序将会对同一个系统进行连续的50000步模拟。
如果你想要一个接一个的运行完全不同的模拟,可在这些模拟之间使用clear命令以此来重新初始化LAMMPS,例如下面的一个程序段:
atom-styleatomic
read-datadata.lj
run10000
clear
read-datadata.lj.new
以上这个程序段将顺序地运行两个完全独立的模拟。
对于多个独立的模拟而言,可以使用variables以及next和jump命令多次循环运行同一个程序段,在运行过程中改变程序的设定值。
例如以下这个程序段,以in.polymer命名
Variabledindexrun1run2run3run4run5run6run7run8
Shellcd$d
Read-datadata.polymer
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$