分子动力学模拟:金属晶体建模与计算模拟1、建模练习2、编程练习3、结果分析0、分子动力学介绍作者:ECJTUMingMu0、分子动力学介绍分子动力学的原理&步骤原理:多体问题的严格求解,需要建立并求解体系的薛定谔方程,根据波恩-奥本海默近似,原子核的运动可以用经典动力学方法处理薛定谔方程牛顿运动方程(简化计算)步骤建立一个由N个粒子(分子)组成的模型体系解N个粒子(分子)组成的模型体系的牛顿运动方程直至平衡平衡后,进行材料性能的计算,对模拟结果进行分析分子动力学方法工作框图分子动力学运行流程图进行分子动力学运算的几个必备步骤:首先建立计算模型设定计算模型的初始坐标和初始速度选定合适的时间步长选取合适的原子间相互作用势函数,便于进行力的计算选择合适的算法、边界条件和外界条件计算对计算数据进行统计处理1、建模练习软件materialsstuidio5.5Fe晶体练习H2O练习Fe-H2O-Fe练习1、建模练习软件lammps编程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.atomdump1allcustom1dump.lammpstrjidxsyszsc_3c_4c_5min_stylesdminimize1.0e-121.0e-121000010000#再次能量最小化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为系统总原子数boundarypss#边界条件,拉伸方向是周期性,其余是自由边界;如果是薄膜拉伸则是两个周期性,块体则是三个周期性unitsmetal#单位制定义为metalatom_styleatomic#原子类型自动neighbor2.0bin#截断半径相关的东西neigh_modifydelay1checkyes#邻近原子列表更新速度#creategeometrylatticefcc3.61#定义晶胞为fcc,晶格常数3.61Aregionboxblock0300303#定义一个长方体区域叫box,长30,宽和高是3create_box1box#创建了这样一个boxcreate_atoms1box#在box里创建了一种原子mass163.546#定义这种原子的质量是63.546#potentialspair_styleeam#定义势函数是EAMpair_coeff**Cu_u3.eam#势所需要的参数在此文件里#definegroupsregion1blockINF1INFINFINFINF#定义了一个叫1的区域groupleftregion1#定义此区域里的原子叫leftregion2block29INFINFINFINFINF#定义了一个叫2的区域grouprightregion2#定义此区域里的原子叫rightgroupboundaryunionleftright#定义left+right=boundarygroupmobilesubtractallleft#定义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_presszvol1,直接把msi2lmp.exe拷贝到指定文件夹下(最好单独一个);2,在ms中建立好结构模型后,在ds模块或者forcite模块中指定力场类型,如对xxx结构指定为cvff力场(这一块看你需要,人工或自动指定),并根据你的需要删除或者改变一些结构信息(如删除键长,改变某些原子的力场类型,在ms中比较容易实现)(这样做的目的是为了少在lammps的data文件中做修改),export结构保存为.car格式,同时自动有.mdf格式的文件生成(mdf文件中保存有对应的力场参数信息,如上面的cvff力场);3,将xxx.car和xxx.mdf文件拷贝到msi2lmp.exe所在的文件夹,并将tools/msi2lmp/biosym_frc_files文件中对应的力场文件拷贝到这个文件夹中(如上面的cvff.frc)(很多朋友在转化过程中报错找不到力场信息就是这个原因,没有力场文件来解释.mdf文件,lmp自带的力场文件和ms中的力场文件一模一样,所以这一步很关键,一定记住你在ms中给结构指定力场时用的那种力场,在这就拷贝那种力场,我一般就用cvff,呵呵足够了);4,在这个文件目录下,通过终端命令行./msi2lmp.exexxx-classI-frccvffdata.xxx运行程序,运行成功生成data.xxx文件和xxx.lammps05文件,data.xxx是空的可以直接删除,数据在xxx.lammps05文件中。5,在xxx.lammps05文件中修改力场参数(把自己的数据加进去),ok!Thankyouforyourattention!