1、lampps手册范本一、各种文件的介绍:1 in file:建立该文件以便程序的写入2 log file:写入状态信息(if the switch is used?)3 screen file决定结果的是否进行屏幕输出4 var name file 定义一个变量,name指变量名,可为字母也可为字符串,形式$x / $ abc二、屏幕输出:结果显示在屏幕上,同时在log file 中。开始前LAMMPS计算出所需的存储空间,运行中每隔几个时步显示一次热力学状态,直至输出最终状态。Loop time of 49.002 on 2 procs for 2004 atoms 该部分显示了几个大类的计
2、算时间Pair time (%) = 35.0495 (71.5267)Bond time (%) = 0.092046 (0.187841)Kspce time (%) = 6.42073 (13.103)Neigh time (%) = 2.73485 (5.5811)Comm time (%) = 1.50291 (3.06703)Outpt time (%) = 0.013799 (0.0281601)Other time (%) = 2.13669 (4.36041)Nlocal: 1002 ave, 1015 max, 989 min 每个处理器中特定原子的数目Histogram:
3、 1 0 0 0 0 0 0 0 0 1 Nghost: 8720 ave, 8724 max, 8716 minHistogram: 1 0 0 0 0 0 0 0 0 1Neighs: 354141 ave, 361422 max, 346860 minHistogram: 1 0 0 0 0 0 0 0 0 1Total # of neighbors = 708282 Ave neighs/atom = 353.434Ave special neighs/atom = 2.34032Number of reneighborings = 42Dangerous reneighborings
4、 = 2当运用了能量最小化命令进行能量最小化时,还将出现如下所示语句:Minimization stats:E initial, nexttolast, final = 0.895962 2.94193 2.94342(显示初终能量以及next-to-last 循环的能量)Gradient 2norm init/final= 1920.78 20.9992(给出能量梯度,即所有原子的受力)Gradient infnorm init/final= 304.283 9.61216 2-form是力向量的长度,inf-form是最大构成?Iterations = 36 循环次数 Force eval
5、uations = 177 对力进行评定的次数当程序中有kspace_style longrange Coulombics solve,将会显示以下语句:FFT time (% of Kspce) = 0.200313 (8.34477)完成3d FFT计算的时间及在总时间中占的百分比FFT Gflps 3d 1donly = 2.31074 9.19989 每秒执行的浮点指令次数(flops)为5N*log(2N),N为3维晶体中的节点数The 3d rate is with communication; the 1d rate iswithout (just the 1d FFTs).在G
6、PU(图形处理单元)上的运行三、指令系统介绍(*)一般来说指令的顺序并不重要,胆在以下几种情况中必须注意:1 LAMMPS并不是全部读完所有指令才执行,而是读一行执行一次,因此下面的两组语句是不同的: timestep 0.5 以下的两个模拟其步长均为0.5 fmsec run 100 run 100 run 100 第一个模拟采用缺省值步长为1 fmsec timestep 0.5 run 100 第二个采用步长为0.5 fmsec2 某些指令只在其他指令之后才生效,如要得到系统温度必须先进行各种定义3 若A指令在B之前,B可以引用A定义的变量四、语法规则在LAMMPS中要区分大小写,一般指
7、令名称用小写字母,文件及用户定义IDStrings 用大写。LAMMPS对每行语句的语法要求如下:1 当语句太长一行放不下时,在语句一行结束的时候输入字符 “” 表示下一行的语句接着上一行继续。2 在#之后输入的字符认为是评论语句,是无用的,但有例外3 紧跟在$后定义变量(之前讲过)4 单词间用空格隔开5 第一个词为指令名,接下来的字母全都为自变量(arguments)6 If you want text with spaces to be treated as a single argument, it can be enclosed in double quotes五、输入的语句结构 一个
8、普通的LAMMPS程序通常由以下四部分组成:1 初始化2 原子定义3 设定4 进行模拟初始化阶段:设定所需参数,相关各项命令,引入所需的力场参数相关命令介绍:1units command语句形式:units style style = lj or real or metal or si or cgs or electronExamples:units metalunits lj该语句定义了单元类型,除了LJ类型,其他物理常量来自于某网,定义实际单元的热能=4.184J。而在LJ类型中,所有变量都是无单位的(参考义龙的论文) 实际量换算成简化单位量有系列公式。以下列出了换算关系及其它各种类型中所
9、使用的标准单位。This command cannot be used after the simulation box is defined by a read_data or create_box command.缺省状态默认为LJ类型2 语句形式: dimension N N = 2 or 3 例如:dimension 2一般缺省为3d模拟,2d模拟的话要在建立simulation box之前进行设定(其余省略)COMMANDS LISTED BY CATEGORY以下列出的LAMMPS命令以按类分好,其分类情况如下:初始化指令:atom_modify, atom_style, boun
10、dary, 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, pa
11、ir_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, velocityFIXESfix, fix_modify, unfixComputes: compute, compute_modify, uncomputeOutput:dump, dump_modify, restart, the
12、rmo, thermo_modify, thermo_style, undump, write_restartActions:delete_atoms, delete_bonds, displace_atoms, displace_box, minimize, prd, run, temperMiscellaneous:clear, echo, if, include, jump, label, log, next, print, shell, variable六 how to discussions()重启一个模拟。有3种方法继续长的LAMMPS程序。在同一个程序中可多次使用运行命令。每次运
13、行都会接着上一条运行指令(run command)进行。Binary file使用restart command将binary files存入硬盘中,之后用read-restart命令可将binary file读出。或者可转为text data files,经read-data命令读出。restart2data 涉及到的命令:1 run commandsyntax run N keyword values(N= # of timesteps; zero or more keyword/value pairs may be appended; keyword= upto or start or
14、stop or pre or post or every)Examples:run 10000# 运行10000步;N=0意味着直接把现系统的热力学值输出run 1000000 upto# 从当前开始一直运行至upto所指定的数值(该语句意为运行至10000000步止)run 100 start 0 stop 1000run 1000 pre no post yesrun 100000 start 0 stop 1000000 every 1000 print Protein Rg = $rrun 100000 every 1000 NULL(补充说明 fix 指令:Syntax:fix ID
15、 groupID style args ID = userassigned name for the fixID是用户自己定义的名字,便于通过fix定义 groupID = ID of the group of atoms to apply the fix to style = one of a long list of possible style names (see below) args = arguments used by a particular styleExamples:fix 1 all nvefix 3 all nvt temp 300.0 300.0 0.01fix m
16、ine top setforce 0.0 NULL 0.0fix指令的用途是对一组原子进行定义,可以用于更新原子的位置、速度、控制温度、加常力、施加边界条件等。当两个或更多fix在同一过程中作用时,根据程序中的先后顺序执行fix指令。Fix指令可通过unfix指令来消除,形式为unfix fix-ID)对于run 100 start 0 stop 1000 这个语句来说,主要与fix语句配合使用。fix 1 all nvt 200.0 300.0 1.0 这两个指令的功能是在接下来的1000步运行中,每run 1000 步的温度都要从200度升到300度fix 1 all nvt 200.0
17、300.0 1.0 对于左侧的一组指令,温度随着从0到10000步的执行run 1000 start 0 stop 10000 逐渐升至300.0度,是一个发生在整个过程的渐变行为run 1000 start 0 stop 10000.run 1000 start 0 stop 10000(共10个)至于pre and post大概是这样的,pre no 的意思是跳过初始设定阶段,如果以下的计算是承接之前运行命令的话(意思是采用之前的参数)但是如果该run指令是第一个指令是,该设定会被忽略。注意:当两次运行指令之间使用了修改设定值的命令时(比如fix等),pre no是不允许的,必须重新设定,
18、否则报错若是post no,则跳过full timing summary, 输出one-line summary timingEvery 的作用是将一个run分成一系列较短的runsvariable q equal x run 6000 every 2000 print Coord = $q每运行2000步输出一次某原子的x坐标值Default:The option defaults are start = the current timestep, stop = current timestep + N, pre = yes, and post = yes. 在run语句中的缺省值2 res
19、tart command (将binary files存入硬盘)restart文件是lammps的一种输出文件形式Syntax:restart 0 N = write a restart file every this many timestepsrestart N root root = filename to which timestep # is appendedrestart N file1 file file1,file2 = two full filenames, toggle between them when writing fileExamples:restart 0rest
20、art 1000 poly.restartrestart 1000 restart.*.equilrestart 10000 poly.%.1 poly.%.2restart 0 意味着不输出restart files。与dump文件一样,restart不能包含两个wild card characters(即通配符)。若filename中含有*号,则它会被目前的值所代替(该情况只在仅有一个filename的情况下成立)1 之后这些binary files可通过指令read-restart来读出在此我们给出2条程序,用于读出binary restart file 或者是converted dat
21、a file,之后发出一条新的运行指令,这条指令从上次运行结束的地方开始执行。这些阐释了在新程序中必须进行哪些设定。细节请参照之后对read-start和read-data命令的讲解。 当程序中附有如下这行语句时:restart 50 tmp.restart 它在运行过程中会产生两个binary files,即tmp.restart.50和tmp.restart.100该程序可以被用于读出第一个restart file以及重新运行最后50个步长。read_restart tmp.restart.50neighbor 0.4 binneigh_modify every 1 delay 1fix
22、1 all nvefix 2 all langevin 1.0 1.0 10.0 904297timestep 0.012run 50 在此需指出以下这些指令不需再重复使用,因为在restart-file中已经进行了必要的设定,这样的指令包括:units, atom_style, special_bonds, pair_style, bond_style,但是必须使用如下的指令,因 为这些指令的参数并未在restart file中进行设定,这样的指令有 neighbor,fix,timestep.如果你真的用该程序运行restarted run,你会注意到在第50步时与热力学数据相符(如果你在
23、原程序中写入了thermo 50命令),但是在第100步时两者并不相符。这是因为fix langevin命令使用随机数的原因。 除了上面提到的这个方法,还可用以下工具将restart file转换为data file:restart2data tmp.restart.50 tmp.restart.data 之后该程序可用于重新运行最后50步:units ljatom_style bondpair_style lj/cut 1.12pair_modify shift yesbond_style fenespecial_bonds 0.0 1.0 1.0read_data tmp.restart.
24、dataneighbor 0.4 binneigh_modify every 1 delay 1fix 1 all nvefix 2 all langevin 1.0 1.0 10.0 904297timestep 0.012reset_timestep 50run 50 需要注意的是几乎所有在最初的in.chain程序中进行的设定必须在被重新设定,除了pair-coeff与bond-coeff,因为新的data file列出了力场系数。另外,reset-timestep命令用于告知LAMMPS当前的工步,该值被储存在restart files中,不在data files中。4.2 2d 模拟
25、运用dimmension命令定义一个2d模拟过程。运用boundary 命令建立一个Z方向的周期性的长方体,这是缺省值。如果使用create box来定义一个模拟的长方体,将z方向的尺寸设定为有限值,这样create-atoms命令可以可将长方体的原子在z平面上平铺显示(即将三维原子显示在二维平面上)。Create box 1 -10 10 -10 10 -0.25 0.25如果使用read command命令来读出文件中的原子坐标,将“zlo zhi”的值设为finite but narrow,与create-box命令的设定类似。对于file中的每个原子,都为其确定一个z坐标值,这样一来便
26、可确保其落在所设定的z方向的边界。(该处如何为每个原子的z坐标赋值?)在最终进行fix定义得时候使用fix enforce2d命令,以此来保证在每步执行完毕后能将速度、力等z方向的值清零。(用法:fix 5 all enforce2d,将速度、力等z方向的值清零的目的是保证在2d模拟中原子保持在其最初设定的z坐标值出不变)将该fix作为最后一个fix命令的原因是将其它fix命令引起的力的变化均清零。LAMMPS中给出的许多程序实例都是针对二维模拟的。需要注意的是:LAMMPS中的一些模型将粒子看做延展的球体,而不是单纯得一个点。在二维模拟中,粒子仍被看做球体而不是盘状物,这意味着它们的惯性的处
27、理与三维模型是相同的。4.3 CHARMM and AMBER力场AMBER力场主要适用于较小的蛋白质,核酸,多糖等生化分子,此力场的标准形式CHARM力场,此力场可应用于研究许多分子系统,通常皆可得到与实验值相近的结构。该立场的的作用形式为:有许多分子动力学的方法可以计算CHARMM与AMBER力场,其中只有部分能够用于LAMMPS。一个力场由两部分组成:一个是用于定义该力场的公式,另一个是用于特殊系统的参数(特殊系统值得是什么?)这里我们只讨论应用于LAMMPS的公式。利用read-data指令或者在输入程序中利用pair-coeff或者bond-coeff在输入数据文件中进行系数的设定。
28、后文对该类工具进行了详述,这些工具可用于CHARMM或是AMBER力场中用于力场系数的值以及将它们的输出值转换为LAMMPS的输入值。 4.4 通过一个程序运行多个模拟 这点可通过多种方式来实现,具体请看对于各个命令的程序说明书。 如果说“多次模拟“意味着继续运行之前的某个模拟,那么你只需要多次使用run这个命令,例如以下的程序片段:UnitsljAtom-style atomicRead-data data.ljRun 10000Run 10000Run 10000Run 10000Run 10000 以上这段程序将会对同一个系统进行连续的50000步模拟。 如果你想要一个接一个的运行完全不
29、同的模拟,可在这些模拟之间使用clear命令以此来重新初始化LAMMPS,例如下面的一个程序段:units ljatom-style atomicread-data data.ljrun 10000clearunits ljatom-style atomicread-data data.lj.newrun 10000以上这个程序段将顺序地运行两个完全独立的模拟。对于多个独立的模拟而言,可以使用variables以及next 和jump命令多次循环运行同一个程序段,在运行过程中改变程序的设定值。例如以下这个程序段,以in.polymer命名Variable d index run1 run2 r
30、un3 run4 run5 run6 run7 run8Shell cd $dRead-data data.polymerRun 10000Shell cd.ClearNext dJump in.polymer以上这段程序将运行不同目录下的8个模拟,在每个目录中都运用了一个data.polymer文档。运用相同的概念可以对位于8个不同温度值条件下的系统进行模拟,只需运用一个温度变量并且将输出的结果储存在不同的log及dump文档中,例如:Variable a loop 8Variable t index 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15Log log.$aRead-dat.polymerVelocity all create $
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1