您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 药学 > 分子动力学方法研究刃位错
分子动力学方法研究刃位错1.LAMMPS中晶体建模2.如何引入刃位错3.通过加载使位错移动LAMMPS中晶体建模unitsmetal#定义单位系统三个方向均为周期性边界条件boundarypppatom_styleatomic#定义颗粒类型LAMMPS中晶体建模latticebcc2.8553orientx1-11orienty21-1orientz011regionboxblock020302#定义晶格类型为体心立方,晶格常数为2.8553埃#改变晶向,将晶格的(1-11)方向指向盒子的x方向,(21-1)方向指向盒子的y方向,(011)方向指向盒子的z方向#以上述晶格类型为基准单位,定义一个长方体区域,x方向范围是0到2个基准,y方向上0到3个基准,z方向上0到2个基准1-11-2-11-100x-y平面011y-z平面晶格取向:LAMMPS中晶体建模LAMMPS中晶体建模create_box1box#制造一个盒子,原子种类为1create_atoms1regionbox#在前面指定的区域内按前面指定的晶体类型和晶向创造原子replicate3061#对样品进行复制,x,y,z方向上各扩大30倍,6倍和1倍LAMMPS中晶体建模regionrightblock55INFINFINFINFINF#定义一个区域right,长方体,x方向范围是55到无限远,INF是无限远,单位仍是前面定义的晶格基准delete_atomsregionright#删除该区域的原子regionleftblockINF5INFINFINFINFdelete_atomsregionl#前面4行指令删除了盒子左右两侧的部分原子,制造出两个自由表面引入刃位错regionablockINFINF17.5INFINFINFregionbblockINFINFINF0.3INFINFregioncblock2537.5INFINFINFINFunitsboxgrouparegionagroupbregionbgroupcregioncgroupboundaryunionabc#指定边界原子,先定义区域,然后把这个区域内的原子放在一个组内,unitsbox意味着长度单位不是默认的晶格基准,而是埃Angstrom引入刃位错A=1Angstrom(basiclength-scale)H0(1,1)=296.731AH0(1,2)=0AH0(1,3)=0AH0(2,1)=0AH0(2,2)=83.9283AH0(2,3)=0AH0(3,1)=0AH0(3,2)=0AH0(3,3)=8.07601A*.cfg83.9283Angstrom引入刃位错variableyequal3.497025#定义一个变量y,其值为盒子Y方向总长度的1/24variablenloop24#定义一个24次的循环n,n取值从1到24labelloopn#标记,循环进行之后的操作variableupequal($y*($n-1)-0.005)#用y和n计算要分组原子的上边界Y坐标,定义为变量upvariabledownequal($y*$n-0.005)#用y和n计算要分组原子的下边界Y坐标,定义为变量downregionatom$nblock2537.5${up}${down}INFINFunitsbox#定义长方体区域,X方向范围从25到37.5,Y方向从up到downgroupatom$nregionatom$n#将区域n内的原子定义为组群nnextnjumpin.bccfeloopn#跳到下个n进行新的循环Aloop引入刃位错change_boxtriclinic#改变盒子的类型,从长方体变为斜方,增加自由度displace_boxallydelta-55remapnone#将盒子的Y方向拉长上下各5个单位,原子不作相应改变pair_styleeam/alloy#声明势函数的类型为嵌入原子势pair_coeff**Fe_mm.eam.fsFe#调用势函数文件Fe_mm.eam.fstimestep0.0025#时间步长为0.0025picoseconds引入刃位错compute3allpe/atom#计算每个原子的势能compute4allke/atom#计算每个原子的动能compute5allcoord/atom3.0#计算每个原子的近邻原子数velocityboundaryset000fix1boundarysetforce0.00.00.0#把边界原子的速度和受力设为0,即除了人为移动,边界原子将保持静止variablelloop45labelloopl#定义一个45次的循环l,l取值从1到45,重复移动左侧边界原子的操作45次引入刃位错variabledxequal0.0074932#定义变量dx,大小为柏氏矢量的1/330柏氏矢量a/2111引入刃位错variablesloop12labelloopsvariabledxshangequal${dx}*($s-1)displace_atomsatom$smove${dxshang}00unitsboxnextsjumpin.bccfeloops#向X正方向移动上半部分(组群1到12)的原子,比如组群5移动距离为dx乘以(5-1),即组群12移动距离为dx的11倍,柏氏矢量的1/30,重复30次就移动1个柏氏矢量的距离variablexloop12labelloopxvariabledxxiaequal${dx}*($x-1)variablemequal(25-$x)displace_atomsatom$mmove-${dxxia}00unitsboxnextxjumpin.bccfeloopx#向X负方向移动下半部分(组群13到24)的原子,方法与上面类似引入刃位错fixnveallnve#指定弛豫种类为nve,体系的粒子数,体积和能量一定微正则系综系统运行400步unfixnvedump1allcfg1bccfe.*.cfgidtypexsyszsc_3c_4c_5#输出包含全部原子相对坐标,势能,动能,近邻原子数等信息的构型文件,bccfe.*.cfg,“*”指当前的运行步数run0undump1nextljumpin.bccfeloopl#跳到下个I,重复之前的移动原子的操作write_restartrestart.indent#制造出了刃位错,输出名为restart.indent的文件(类似于存档)引入刃位错初始状态,步长为0l=15,步长为6000l=30,步长为12000l=45,步长为18000通过加载使位错移动fixnveallnve#仍采用微正则系综variablecloop30#引入循环,30次labelloopcfixshearalldeform1xyerate-0.002#加载在盒子的XY平面上,改变盒子的形状,切应变的大小为0.002run400unfixsheardump1allcfg1bccfe.*.cfgidtypexsyszsc_3c_4c_5run0undump1#与前面类似输出构型文件nextc#跳到下一个循环jumpin.bccfeloopcwrite_restartrestart.fe#输出restart文件,restart.fe通过加载使位错移动加载前,步长为18000c=10,步长为22000c=20,步长为26000c=30,步长为30000谢谢!
本文标题:分子动力学方法研究刃位错
链接地址:https://www.777doc.com/doc-2330268 .html