精选Lammps初学者——in文件中文解析(1)初始化Units:Units命令是用来设定模拟的原子类型。Unitsstyle(lammps现在提供的有style=LJ、real、metal、si、cgs、electron)LJ是硬球模型Real是真实的原子模型Metal是金属原子模型Si是硅(半导体)原子模型CgsElectron是电子模型Dimension:Dimension命令是用来定义模拟的维度,默认情况为三维。DimensionN(N=2,3)Boundary:Boundary命令是用来设定模拟的边界条件。Boundaryxyz(x,y,z=p,s,f,m四种类型中的一种或者两种)P是周期性边界条件S是自由边界条件(但是具有收缩性)F是固定边界条件M是具有最小值的自由边界条件(但是具有收缩性)精选Atom-style:Atom-style定义了模拟体系中的原子属性。Delete-atoms:Pair-style:Pair-style定义了相互作用力场类型,即势函数。(2)原子定义1、Read-data/read-restart:Read-data或read-restart为从data或restart文件中读取内容来定义原子。2、Lattice:lattice是用来原子类型构建模型晶格结构。Latticestylescalekeywordvalues...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命令用于在regionbox命令指定的区域内创建一个模拟的盒子。Create_boxNregion-IDN为使用该原子类型进行模拟Region-ID为使用区域的ID使用模拟域Create-atoms:Create-atoms用于在所创建的模拟的盒子中填充某种原子。Create_atomstypestyleargskeywordvalues...(3)设定:力场系数Pair-coeff:模拟参数NeighborNeighbor是定义NeighborskinstyleSkin为Style可取bin、nsq、multiNeighbor-modify:Group:Timestep:Timestep是定义模拟的时间步长。精选TimestepdtDt为时间步长(时间单位),默认为1psReset-timestep:FixFix为定义对部分原子或者对系综的操作。=指定的操作名称编号(如1、2、3…….)Group-ID=制定操作范围的原子(如all……)Style=操作内容,如何操作Args=相关操作内容的相关操作参数Fix-nvt:恒定N(原子数量)、V(体积)、T(温度)对时间积分Fix-npt:恒定N、P、T对时间积分Unfix:Compute/compute-modify:输出选项Thermo:Thermo命令用于定义每隔一定时间步长输出一次采样内容。ThermoN每隔N个时间步长输出一次采样内容至屏幕或者log文件Thermo_style:Thermo_style命令主要是用来说明采样的内容,即输出到屏幕或者LOG精选文件中的内容。()Thermo_stylestyleargsStyle=one、multi、customArgs=特定的参数列表Oneargs=noneMultiargs=noneCustomargs=listofattributesPossibleattributes=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_nameDump:Dump命令主要是用来输出计算后单个原子的相关信息的。DumpIDgroup-IDstyleNfileargs精选ID:自己给这个dump命令定义的一个代号(自定义)group-ID:那些信息需要被输出的原子群(预先定义好group)Style:类型N:每经过多少时间步输出信息File:输出名称Args:相关参数(每个类型不同)Restart:(4)运行Run:Minimize:例一unitsmetal#单位为lammps中的metel类型boundaryppp#周期性边界条件atom_styleatomic#原子模式latticefcc3.61#Cu的晶格常数3.61regionboxblock040404#x,y,z各方向上的晶胞重复单元数,也即区域大小create_box1box#将上述区域指定为模拟的盒子create_atoms1box#将原子按晶格填满盒子pair_styleeam#选取Cu的EAM势作为模型pair_coeff**Cu_u3.eam#EAM势文件名称run0#运行0步,仅为启动lammps的热力学数据计算variableEequalpe#定义变量E为系统总势能variableNequalatoms#定义变量N为系统总原子数printthenumberofatoms&systemenergynoware$N$E#打印信息精选create_atoms1single2.452.052.05#在该位置插入一个原子min_stylesd#能量最小化模式,sdminimize1.0e-121.0e-1210001000#能量最小化参数,指数越大最小化程度越深printinterstitialintroduced,minimized:$Natoms,energyis$Efix1allnvt100100100drag0.2#nvt系综,原子数、体积和温度保持不变;T=100Ktimestep0.005#步长0.005fsrun1000#运行1000步printnvtperformed,temperatureup:$Natoms,totalenergyis$Efix1allnvt1000.0001100drag0.2#nvt系综,温度由100K到0.0001Krun1000#运行1000步printnvtperformed,temperaturedown:$Natoms,totalenergyis$Ecompute3allpe/atom#计算每个原子的势能compute4allke/atom#计算每个原子的动能compute5allcoord/atom3.0#计算每个原子的近邻原子数dump1allcustom1dump.atomidxsyszsc_3c_4c_5#将信息写入dump.atommin_stylesdminimize1.0e-121.0e-121000010000#再次能量最小化printthefinalstate:$Natoms,totalenergyis$E#打印信息~例二boundarypss#边界条件,拉伸方向是周期性,其余是自由边界;如果是薄膜拉伸则是两个周期性,块体则是三个周期性unitsmetal#单位制定义为metal精选atom_styleatomic#原子类型自动neighbor2.0bin#截断半径相关的东西neigh_modifydelay1checkyes#邻近原子列表更新速度#creategeometrylatticefcc3.61#定义晶胞为fcc,晶格常数3.61Aregionboxblock0300303#定义一个长方体区域叫box,长30,宽和高是3create_box1box#创建了这样一个boxcreate_atoms1box#在box里创建了一种原子mass163.546#定义这种原子的质量是63.546#potentialspair_styleeam#定义势函数是EAMpair_coef**Cu_u3.eam#势所需要的参数在此文件里#definegroupsregion1blockINF1INFINFINFINF#定义了一个叫1的区域groupleftregion1#定义此区域里的原子叫leftregion2block29INFINFINFINFINF#定义了一个叫2的区域grouprightregion2#定义此区域里的原子叫rightgroupboundaryunionleftright#定义left+right=boundary精选groupmobilesubtractallleft#定义mobile=all-left#initialvelocitiesvelocityleftset0.00.00.0#设置原子初速度为0computepallpressurethermo_temp#计算应力,计算结果记为pvariablepressxequalc_p[1]#定义变量pressx=c_p[1],c_p[1]的意思是p里第一个值variablepressyequalc_p[2]#定义变量pressy=c_p[2],c_p[2]的意思是p里第二个值variablepresszequalc_p[3]#定义变量pressz=c_p[3],c_p[3]的意思是p里第三个值thermo_stylecustomsteptempetotalpressv_pressxv_pressyv_presszvoldump1allatom1000dump.tensile#输出结果到dump.tensileminimize1.0e-61.0e-610001000#驰豫fix1leftsetforce0.0NULLNULL#固定左边的原子fix2allnpt1.01.01.0aniso0.00.0NULLNULLNULLNULL10.0drag1.0thermo1000#每1000步输出一次结果timestep0.002#时间步长0.002psrun10000精选#运行10000步unfix2fix3allnvefix4alltemp/rescale1001.01.051.0fix5alldeform1000xerate0.002unitsbox#设置沿x方向拉伸,应变率为0.002(1/ps)computesallstress/atom#计算每个原子上的应力,计算结果记为scomputestreaallreducesumc_s[1]#将s里第一个值求和,计算结果记为streavariablestressaequalc_strea/vol#定义变量stressa=strea/vol,vol是体积computestreballreducesumc_s[2]variablestressbequalc_streb/volcomputestrecallreducesumc_s[3]variablestresscequalc_strec/volthermo_stylecustomsteptempetotalpressv_stressav_stressbv_stresscvolrun300000