补充内容Lammps与分子动力学常用模拟软件Lammps功能和原理经典范例1.常用的MD模拟软件NAMD:免费主要针对与生物和化学软材料体系,程序设计水平高,计算效率高。有很好的分析辅助软件VMD。AMBER主要针对生物体系,也适当兼容一般化学分子。有很好的内置势能模型,自定义新模型和新分子很方便,有很完善的维护网站。计算效率不高运算速度慢。CHARMM主要针对生物体系,也包含部分化学体系。势能模型更新很快自定义新模型比较方便。计算效率低。GROMACS免费主要针对生物体系,也适当照顾一般化学体系。算法好,计算效率高。界面友好,维护服务好。TINKER免费一般性分子动力学软件,对生物体系略有偏重。优点支持多种模型。仍在开发中,某些方面还不完善。DL-POLY一般性分子模拟软件,界面友好,计算效率高。维护服务很好。MaterialsStudioLAMMPS免费一般性分子模拟软件。兼容当前大多数的势能模型,编程水平高,计算效率高。可以模拟软材料和固体物理系统。MaterialsExplorer立足于Windows平台的多功能分子动力学软件。拥有强大的分子动力学计算及MonteCarlo软件包,是结合应用领域来研究材料工程的有力工具。MaterialsExplorer可以用来研究有机物、高聚物、生物大分子、金属、陶瓷材料、半导体等晶体、非晶体、溶液,流体,液体和气体相变、膨胀、压缩系数、抗张强度、缺陷等。MaterialsExplorer软件中包含2Body,3Body,EAM,AMBER等63个力场可供用户选择。MaterialsExplorer软件拥有完美的图形界面,方便使用者操作。2.Lammps功能和原理Lammps初识Lammps的功能Lammps的原理Lammps的特点Lammps的应用Lammps初识Lammps程序是一个经典分子动力学计算程序。全称Large-scaleAtomic/MolecularMassivelyParallelSimulator官方网址:国内交流论坛:的功能能(features)一般意义(并行化,可扩充,脚本化输入,接口化编译)专门意义(能建模原子类型,有什么力场,有那些原子操作,如何设置系综/边界/约束,积分方法,输出控制,前后图形处理,以及具有一些什么特色功能)不能(non-features)-非图形化界面,不能自动建立分子结构模型和分配力场参数,不具有复杂的分析的手段,不能可视化输出结果-补救:Pizza.py工具包,用于建模和分析以及可视化,但是功能不够强大。-必须一些其他前后处理软件(几何建模,物理建模,可视化分析)结合使用,接口方法。Lammps的基本原理编写、输入模拟程序运行模拟可视化结果分析输出结果Lammps输入文件的主要组成部分InitializationAtomdefinitionSettingsRunasimulation后面的两个部分可以按照需要多次重复。Lammps软件目前的特点从势场角度看:建模软物质(生物分子,聚合物),固态材料(金属,半导体),以及粗粒子和介观材料。更一般的说是lammps程序是用来建模原子/介观/连续尺度物质以及其在热、力学、化学条件下的性质的模拟软件,因此是系统化方法。Lammps程序运行环境:单CPU和多CPU,采用的是消息响应和模拟域的空间分解并行机制。Lammps程序代码共享和模块化设计,具有功能易于扩充的特性。新版采用C/C++语言书写,周期性发布,以日期为为准,不断更新一些bug和增加一些功能。脚本语言应用开发。美国能源部下属的圣地亚国家实验室发布,主要作者:StevePlimpton,AidanThompson,andPaulCrozier网上邮件组可以解决和及时交流Lammps软件入门明确自己的问题和方向,选择正确的工具要做的是什么问题,属于物理,化学,力学,材料,还是都有?能否具体到希望要作出什么结果?实验和理论上是否有相似的研究?再看问题是否适合lammps程序?是否有别的程序可以替代选择或者联合选择?计算环境搭建可行性分析现有计算机条件:硬件水平决定模拟的规模是否有相关的支持:软件环境团队学习的重要:交流是非常重要学习一点分子动力学基础物理学基础:原子论,量子论,简单的数学材料学基础:结构化材料,晶体理论统计力学基础:热力学知识,统计分布专业基础:热流热导分析,应力分析,辐射损伤分析,蛋白质计算机基础:程序学习和改进,编程和硬件识别如何利用好Lammps手册?求人不如求己准备一份纸版,一份电子版放置在桌面。养成良好的学习习惯几个章节必须看(1-1,2,3;2-2,3,5,6,7;3-1,2,3;4-all)读做例子有感觉(melt,crack,shear)错误信息自己找(完美的错误提示信息)随手整理做记录命令学习(工具体现)命令名称:基本上告诉你意义书写格式:脚本语言的特色格式选项说明:严格遵守,最好理解含义范例书写:有助于自己写脚本注意事项:特别的地方相关命令:命令分类学习,比如输入有那些方式,势函数定义有哪几类?Lammps常见命令unitdimensionnewtonprocessorsboundaryatomstyleatommodifyatomtype选择单位系统,L-J、real、metal2Dor3D?默认是3D边界条件:周期性边界or自由边界?定义你的模拟体系中的原子属性告诉lammps在你的模拟中使用何种力场?pair_style,bond_style,angle_style,dihedral_style,improper_styleLammps软件的应用应用步骤—程序安装安装平台环境(考虑不同的操作系统,是否并行计算)简单易行的安装•Windows下:命令行执行方式•Linux下:编译选择项•几个关键点:编译器的选择;并行库的位置,相关库的位置应用步骤--实例学习输入脚本格式书写:3-1节内容,积木式搭建分块命令学习方法:几何模型构建:atom_style,boundary,dimension,unitscreate_atoms,create_box,lattice,read_data,read_restart,region,replicate物理模型构建:angle_coeff,angle_style,bond_coeff,bond_style,dielectric,dihedral_coeff过程模型构建:Fix:isanyoperationthatisappliedtothesystemduringtimesteppingorminimization.Examplesincludeupdatingofatompositionsandvelocitiesduetotimeintegration,controllingtemperature,applyingconstraintforcestoatoms,enforcingboundaryconditions,computingdiagnostics,etc.输出模型构建:compute过程计算量,热力学输出量(全局量),局部表征量(单个原子、组原子)3.经典范例使用L-J势模拟裂纹的扩展使用EAM势模拟Ni的剪切行为Cu、Ni等金属的凝固过程模拟表面能计算A.使用L-J势模拟裂纹的扩展裂纹lowerupperleftupperleftlowerxyLammps计算输入文件•#2dLJcracksimulation(问题的基本初始化)•dimension2•#2维分子动力学模拟•boundaryssp•#x,y方向不存在周期边界条件,z方向周期边界条件。•atom_styleatomic•#原子类型(金属)•Neighbor0.3bin•#建近邻表参数(rc+0.3)bin表示为近邻表类型。•neigh_modifydelay5•#间隔多少载荷步重新形成近邻表Lammps计算输入文件•#creategeometry创建初始几何构形•Latticehex0.93•#指定晶格类型(二维hex)和晶格常数•Regionboxblock0100040-0.250.25•#定义一个区域•create_box5box•#在指定区域建立一个simulationbox,5表示原子类型的种类数•create_atoms1box•#在simulationbox中创建类型为1的原子(原子位置初始化)•Mass11.0•Mass21.0•Mass31.0•Mass41.0•Mass51.0•#指定单个原子的质量Lammps计算输入文件•#LJpotentials(指定原子作用势)•pair_stylelj/cut2.5•#指定lj势,截断半径为2.5•pair_coeff**1.01.02.5•#指定lj势参数•#definegroups(便于加载)•Region1blockINFINFINF1.25INFINF•Grouplowerregion1•#定义lower组(便于施加外加速度)•Region2blockINFINF38.75INFINFINF•Groupupperregion2•#定义upper组(便于施加外加速度)•Groupboundaryunionlowerupper•#定义总边界组•Groupmobilesubtractallboundary•#定义可动原子组(便于统计温度)Lammps计算输入文件•regionleftupperblockINF2020INFINFINF•regionleftlowerblockINF20INF20INFINF•groupleftupperregionleftupper•groupleftlowerregionleftlower•#定义左上、左下原子组(便于指定裂纹的存在)•setgroupleftuppertype2•setgroupleftlowertype3•setgrouplowertype4•setgroupuppertype5•#指定原子类型(便于指定裂纹的存在)Lammps计算输入文件•#initialvelocities初始化速度•computenewmobiletemp•#定义温度的计算(可动区域内统计平均)•computenew2mobilestress/atom•#定义原子应力的计算(整个区域)•Velocitymobilecreate0.01887723tempnew•#按指定的温度(0.01)计算方法,初始化原子的速度•Velocityupperset0.00.30.0•#upper原子组y方向的速度为0.3•Velocitymobilerampvy0.00.3y1.2538.75sumyes•#mobile原子的速初始度从0到0.3线性变化•#fixes施加约束•fix1allnve•#nve系综的积分算法•fix2boundarysetforceNULL0.00.0•#边界boundary上力条件,钢化原子,便于加载!!Lammps计算输入文件•#run运行计算•timestep0.003•#时间间隔步•Thermo200•#每200步输出热动力学统计量•thermo_modifytempnew•#计算温度通过new指示的方法计算•neigh_modifyexcludetype23•#原子2,3之间作用取消(也就是通过不使他们在近邻表中出现实现)•Dump1allatom500dump.crack•#每隔500步将原子信息写入文件dump.crack•Dump2mobilecustom500dump2.cracktagxyzc_new2[2]•run5000•#进行5000步的模拟B.使用EAM势模拟Ni的剪切行为Z‘xY’100010001011011yz•#3dmetalshearsimulation3维金属剪切模拟•Unitsmetal•#采用金属