lammps 新手一睹.doc_第1页
lammps 新手一睹.doc_第2页
lammps 新手一睹.doc_第3页
lammps 新手一睹.doc_第4页
lammps 新手一睹.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文结构:0. 写在最开始的话1. 首先确定lammps是不是适合你2. 下载和编译3. 如何使用lammps进行计算4. 关于manual.pdf(20/JUL/07)的阅读建议5. Comannds 的简单讲解6. 解决问题的途径7. 写在最后面的话温馨提示:(1)点击标题可直接到相关的“章节”。(2)为避免混淆,上面的各“章”,在本文中用“步骤2”、“步骤5”这样的词代指;而文中其它地方出现的“章节”是指lammps手册中的章节。(3)文中跟某些名词相关的网页已加注超链接,直接点击可浏览该页面以获得更详尽的信息。 0. 写在最开始的话从2007年5月初开始接触和学习lammps,时至今日,依然对lammps存有很多疑惑。如同一个刚入门的工匠面对着一台功能强大的复杂机器,不知所措。虽然还有好多好多的东西要学习,但是也已经了解了一些最最基本的东西了。我可以去帮助那些刚刚入门的人,正如我刚刚开始学习lammps时诸位热心网友对我的帮助。现在,我写一写自己知道的东西,希望对lammps的新手有所帮助,不当之处,真诚地希望各位读者多多指正。我写的这点儿东西,使用者仅限于使用lammps的新手,而且里面只讲到了ubuntu下编译lammps的单机版,没有涉及并行版的编译。我希望这个“指南”会帮他们更快地了解和学习lammps。如果你已经在使用lammps了,我觉得这个“指南”是不会对你有什么帮助的。不过,对于高手来说,如果你有时间,我还是希望你能看完这篇,因为我接触lammps和MD的时间都不长,我怕我的某些错误会误导新手。所以,希望大家一起努力,完善这个指南。另外,我只把这篇文章放在这个由学校提供的个人网页空间。之前QQ空间的那篇文章,因为对其内容改动较大,故我已将其删除。我并不反对转载,(先自我陶醉一下下,可是会有吗?呵呵)但是转载之前,请注意:(1)文章中的一些表述我尚不肯定正确与否。所以转载之前,请你负责任地认真读完这篇文章并确认你是否认可我的表述。如果发现错误,请及时联系我,谢谢先了。(2)我知道有些论坛的用户可以设置回复或者付出金币or积分等才能查看某些帖子,我坚决反对这篇文章被这么做。(3)本文没有所谓的版权,完全是分享性质的。转载的时候,没有必要著上是我写的,可是我不希望有一天看到这篇指南成了另外的一个名字的原创。如果你发现文中的错误并做了修改(最好也通知我),那样我们可以算是这篇文章的共同作者。(4)严禁本文被用作其它用途。我还要再次重申,我不想写成像教科书一样的东西。我写这篇指南的意图也绝对不是“ 哦,你是lammps新手吧,那你按照我说的做吧。”那我岂不成了教父了?呵呵。要知道,这篇文章的作者只不过是一个3个月前才知道世上有lammps这款代码的家伙,他根本就没有完全读完和读懂lammps手册,他对MD的基本理论了解的是少之又少。我只不过是想结合我学习lammps的过程,写一下我的体会和建议,供新手参考。如果你觉得这个指南对你有用,那固然很好;但是如果你看后觉得我说的都是屁话,那也很好,你可以按照另外的思路去学习lammps,同时,你还可以按照我的联系方式大骂我一顿,我也会洗耳恭听的。如果这篇文章真的对lammps的初学者有些许帮助,那我将感到十分的欣慰。 (返回本文目录)1. 首先确定lammps是不是适合你可以从以下两个网页找到答案:/features.html /non_features.html 如果你觉得看英文很不爽,这里有一个中文翻译-By hooge.lu我也简单说几句,分子动力学要做的,大部分lammps都可以做(呵呵,这句话我是听别人说的)。lammps源代码公开,免费下载,你可以根据自己的需要修改lammps代码,重新编译。lammps可以在并行环境中运行,这更能体现出它强大的计算优势。它能模拟上百万的原子体系,气态,液态或者固态,在各种系综下。lammps提供了各种势函数供你选择,具体请到lammps官网查询。再说说lammps所谓的“缺点”吧。相比lammps的计算能力,它提供给我们的前后处理的功能显得相对弱了一些。对于一些复杂体系初始构型的建立,lammps表现得并不是很尽如人意。所以lammps提供了一个read_data命令可以读入一个data文件,这个文件包括体系中各个原子的xyz坐标等等相关参数。对于这个文件中定义系统的部分,我有两个建议,用其它的软件做好体系构型,导出数据文件,然后按照lammps规定的格式(参阅手册中read_data命令)修改;或者你的计算体系构型中原子的排布有某种规律可循,你就自己编程从而获得lammps需要的data文件。提醒一下,上面提到的通过data文件的方式建立系统的初始构型,是在你已掌握你的体系的相关参数的基础之上的,lammps只是规定了这个data文件的语法格式而已。同时,lammps提供的各种势函数,它也是提供了各种函数的表达式,至于各个函数所需要的参数,lammps并不会告诉你应该填多少。这些参数都需要你在用lammps计算之前就已经知道。如何知道?这个问题我就不能回答了,一种办法是参阅相关的文献(这么说貌似很牵强哦)。还有一个可能被新手抱怨的原因就是lammps没有图形界面。这使得你无法直观地看到你模拟的系统,相关的建议是采用其它的可视化软件,如AtomEye,VMD,raster3d等等。我用的是VMD,Linux版本和Windows版本都有。VMD 的简单使用:File - New Molecule Browse then Load 读入 xyz 文件Graphics - Representation Create Rep 新建层(VMD中对同一个Rep中所有原子的大小颜色同时控制,所以要对不同种类的原子分别设置显示效果,需要新建几个Rep)Selections 结合Keywords和Value设置每个层中的原子。(Selected Atoms中把all删除,然后双击某个Keywords如type,然后再在Value栏里双击某个种类,之后Apply)Draw style中Coloring Method建议选择ColorID ,然后在后面选择颜色;Drawing Method建议选择Beads ,然后在Sphere Scale和Sphere Resolution中调整球的大小和清晰度计算结果的数据处理在lammps中也显得不是很方便,你可能需要自己编程进一步处理。至于一些数据曲线的作图,Windows下的Origin,Linux下的labplot足以应付这个问题了。以上我只是把features.html和non_features.html里面的内容结合我的理解简单地说了几句。我建议你认真阅读这两个网页,毕竟,下面的几个步骤,还有那阅读那让人痛苦的手册,都是建立在lammps可以胜任你的计算要求的基础之上的。如果lammps不适合你,那就想其它的办法,不要在看这篇文章的后续内容上浪费时间了。 (返回本文目录)2. 下载和编译lammps是在linux环境下运行的。所以,首先你要有一个linux环境,如果你已经在用linux了,那当然再好不过了。(lammps也可以在Windows下编译,但那不是我现在所能理解的范围。关于这一点,请查阅“材料科学论坛分子动力学模拟版”的某个置顶帖后面的相关回帖,但是我个人不推荐这么做。)如果你跟我一样,听到lammps这个词的时候对linux一窍不通,那么你有两个选择。要么在你的Windows环境中虚拟一个linux系统,我没有这么做过,所以我不便说什么。不过我建议你自己在网上搜索在Windows下安装虚拟机虚拟linux的方法,我只是在ubuntu下虚拟过XP环境(只是用来QQ视频),想来应该差不多的。还有一个方法呢,就是安装一个linux。新手的话,我个人推荐ubuntu,对硬件支持较好,上手很快。请参考:ubuntu7.04(硬盘)安装与配置图文指南 多罗嗦几句:一开始用ubuntu,我就深深的喜欢上它了,现在,我的机子上原来的Windows已经被我格掉了。换一个操作系统,刚开始会很不不习惯,但是现在,我可以在ubuntu下上网、写文档、看电影听音乐、聊QQ 、用MSN 、看网络电视、使用Matlab这一切都是通过ubuntu完成的,而非在VirtualBox虚拟的XP中做的。还有最重要的一点,ubuntu中你所需要的绝大多数软件都可以用sudo apt-get install这个命令通过网络安装,不会有Windows里面烦死人的软件破解等等问题。一段时间之后,你就会觉得ubuntu.linux带给你的美妙的享受,它的那种自由和分享的理念,这,绝对不是Windows可以给你的。在ubuntu中文论坛里,你可以学习到很多关于ubuntu的知识,解决你在使用ubuntu过程中可能会遇到的很多难题。关于ubuntu的安装,你也可以请查阅“初学者园地” 的帖子,尤其是那几个置顶帖。好了,如果你拥有了linux环境,下面就开始我们体验lammps的历程。到这里下载lammps,建议你下载LAMMPS upgrade。需要说明的是,lammps更新很快,几乎每天都有源代码的修改。所以,你有必要经常关注lammps官方网页。下载之后,你会得到一个*.tar.gz的压缩文件包,在linux的终端,用以下的命令解压。gunzip lammps*.tar.gz tar xvf lammps*.tar 之后,你会得到一个名为lammps-*的文件夹(注意,这里的*是通配符)。最新版本的lammps是用C+写的,编译之前,你的linux系统中需要有一个编译器。抱歉地说,我忘记ubuntu是否自带这个编译器了,如果没有的话,用sudo apt-get install build-essential这个命令安装,这需要你的系统管理员帐户和密码。下面说ubuntu下编译单机版的lammps的过程(并行的编译我还没去学习,如果需要,建议你查阅这个帖子-By hooge.lu)。首先到lammps/src/STUBS目录下,输入make,回车。然后返回到lammps/src/目录下,输入make serial,回车。好了,现在你会看到屏幕上的字幕流,表示lammps正在被编译。喝口茶,等会儿,剩下的事情ubuntu会帮你搞定。如果成功编译,在lammps/src/目录下,会生成了一个名为lmp_serial的可执行文件,计算,就是靠它了。 (返回本文目录)3. 如何使用lammps进行计算先简要地说说lammps的运行过程:lammps本身没有图形界面,模拟计算的过程都是在linux终端执行。计算的时候,需要用户写一个输入文件(input script),可能还需要一个data文件,至于如何写输入文件,我们稍后讨论。假设你已经写好了这个输入文件,文件名为,把这个文件(如果有data文件的话,连同data文件)和在步骤2中编译得到的lmp_serial放在同一个目录下,如/Desktop/compute/。从终端进入到这个目录,所需要的命令是:cd /Desktop/compute 然后,在终端输入 ./lmp_serial 回车。你就会发现lammps开始计算了。就这么简单。lammps的输出文件主要可以分为三种:一是log.lammps,这里面记录了整个计算过程屏幕上显示的所有信息,更详细的请参照thermo、thermo_modify等命令;另一类是与dump命令有关的输出文件,可以输出应力、能量、原子位置、速度等等信息;第三种是restart文件,具体的信息请查阅write_restart命令。lammps新手一般会很快注意到下载的lammps解压之后的一个名为examples的子目录。面对这里面的in文件中一行行看似无序的单词和数字的组合,如何写in文件,恐怕是新手们的最大疑问。很多网友在一开始学习lammps的时候,总是问:“怎么写in文件?”,“examples目录中in文件里面的那些命令和数字是什么意思呀?”等等这些问题,不是人家不回答,而是实在不好回答,无法回答。其实你想想,只要你会写某个MD模拟过程的in文件了,那lammps就完全可以计算了,那剩下的工作仅仅是数据的后处理。如何写in文件这要你首先看懂lammps手册!下一章,我们就讲讲lammps的manual.pdf的结构和一些对阅读这个手册的建议。 (返回本文目录) 4. 关于manual.pdf(20/JUL/07)的阅读建议该manual.pdf(在lammps-*/doc目录中)有454页之多,如果你要完全看完,是要话一段时间和精力的。我刚开始学习的时候,在群里问学习lammps的方法,有网友说:“RTFM !”我很好奇这四个字母是什么意思,他解释说:“Read The Fucking Manual !”呵呵,看来,读manual很痛苦这并不是个别现象,如果你一开始看manual觉得很郁闷,千万不要灰心放弃,一定要坚持下去。再者说,对于学习任何事物的新手,给了400多页的资料,也绝对不应该一开始就从第一页一个字一个字地读到最后一页。要学会把厚书读薄,再把薄书读厚。我大体上看了一下manual.pdf,里面所有的内容在lammps的官网上都可以找到。我个人很不欣赏manual.pdf中后面的命令编排方式,而喜欢看lammps官方网页,一目了然,控制自如,我个人觉得看manual.pdf会增加我的痛苦,呵呵。上一段提到的“把厚手册读薄,再把薄手册读厚。”通过下面我的建议来体会这句话的含义。(注意,仅仅是建议)(0)理解一点分子动力学的基本理论 这段话是写给那些跟我一样的那些刚接触lammps的时刻也是刚接触MD的时刻的新手的,而大多数人应该不存在这个问题。MD作为一个庞大的理论体系,你不可能短时间内就理解的很透彻,但是,像“MD基本方程、积分算法、周期性边界条件、系综、驰豫” 等等这些名词你应该大体知道是什么意思吧,要不然的话,看lammps手册的痛苦将无法用语言形容。我推荐给这样的新手一篇文献,直接点击或右键选择“目标另存为”:文玉华,朱如曾,周富信,王崇愚,分子动力学模拟的主要技术,力学进展 ,1(2003),P.65-73. 当然,我相信你也应该清楚,如果你要用lammps做MD的话,从上面的那篇文献所学到的知识远远不够,请继续查阅和学习大量的MD书籍文献,最好是看英文的。说实话,我们不得不承认大部分中文文献没什么意思。(1)通览一遍手册 大体上翻翻muanual.pdf,你就会发现,除了两页的目录,前面95页是叫做Documentation的一部分;后面的是叫做Comannds的一部分,有357页之多。Documentation部分共分为10章。我们来分解一下这95页的内容。前面的19页,也就是第一章Introduction和第二章Getting started。部分内容步骤1和步骤2中都有所涉及了,但愿我在前面两个步骤中的讲解多少能帮助你提高这部分的阅读速度。但是,毕竟也只是部分内容,没有涉及到的部分里面也有一些很重要的内容,但是我个人感觉可能有些也用不到,可以有选择地看一下。第三章Comannds是第22页到第27页共6页的内容,建议你快速扫一眼之后就去看下一章吧。为了避免步骤4中的内容太多了,我们将在步骤5中单独来详细讨论这一章。第四章How-to discussions,里面的这14小节,建议你仔细看一下,对于不同的问题,有几个小节讲述的内容还是很重要的。其实这部分在manual.pdf中也就12页。针对第五章(3页)提到的Example problem,顺便说一下,在步骤2中你解压获得的lammps-*的文件夹,里面有个examples子目录。这个子目录里面是lammps提供的十几个例子,从各个例子中的in文件,你可以大体了解一下in文件的结构。记得以前我跟一个师弟说,如果你看着in文件,能够从脑海里想象出来这个in文件运行之后的结果,并且,你想象的结果符合真实运行后的结果的话,那说明这个in文件涉及的相关命令和参数你是真的理解了。第6、7、8三章的内容,分别是2页、5页、12页,根据你要模拟的系统中的具体问题,有选择性的看一下。第9章Errors,共33页。这部分你根本没有必要现在看它。运行lammps时可能遇到报错,你可以到这里查,不过呢,不要奢望在这里查到很好的解决问题的办法。第10章,就3页,貌似没什么东西,呵呵。Commands这部分呢,是详细的讲述了lammps的各个命令的功能、语法格式、各参数的意义、使用注意事项、默认值等等内容。该部分关于各个命令的详细介绍,我建议你结合manual.pdf 的3.3和3.4两节来体会它,顺便可以了解in文件的结构。本文中的步骤5也会帮助你阅读这部分的。每个命令的功能在第一段话中就已经说了个大概,既然是先通览一遍,那么只需要先看这一段就行了,后面的相关参数的设置讲解,暂时先不要理它。整个这个通览的过程不会花太长的时间,2-3天应该可以完成。之后,你对lammps应该有了一个大致的了解(也就是把厚手册读薄),这个了解应该比你最最开始看features.html和non_features.html两个网页要深刻得多,我的意思是你现在应该大体上知道你的模拟过程会用到哪些命令了,如果不能的话,我建议你再重复这个过程,同时结合examples中的算例以及下面的两个网页:/pictures.html,/movies.html。(2)仔细阅读你要进行的模拟所需要的命令 lammps功能强大,可以做各个方面的分子动力学模拟,但是针对一个具体的MD模拟过程,可能只需要用到其中的部分命令。通过对手册3.3和3.4节的学习,已经对手册Commands这部分的通览,你应该能知道哪些命令在你的这次模拟中是有用的。然后,你就可以逐字地仔细阅读那些命令了,遇到MD原理相关的而你不懂的,要认真去查阅相关资料弄懂(把薄手册读厚)。这个时候,可不要再抱有任何通览阶段的心态,如果你错过或是误解了一句话,都可能对你的计算带来难以估计的影响。因为对我们这些做计算机模拟的人来说,lammps就是一个黑盒子,你给它in文件,lammps输出各种数据,如果你对用到的命令都不熟悉,如何分析模拟结果的合理与否呢?不过也不要紧张,下一章再简单讲一些Commands这部分,以帮助你完成这个过程。 (返回本文目录)5. Comannds 的简单讲解 英文水平不高,以下的东西我大概翻译了一下主要意思,有的忽略没翻译,所以你要认真阅读手册中的第三章。以下章节命名规则按照lammps手册。3.Commands 这一章描述了lammps输入文件的格式和在定义lammps模拟所需要的命令。3.1 LAMMPS input script我们用lammps做分子动力学模拟,需要一个输入文件。lammps在执行计算的时候,从这个文本文件中逐行读入命令。大多数情况,lammps输入文件中各个命令的顺序并不是很重要。但是你要注意以下几点:(1)lammps并不是将你的输入文件全部读入之后才开始进行计算的,或者说,每条命令在它被读入之后就会起作用了。注意,下面两组命令的执行效果是不相同的。timestep 0.5run 100run 100和run 100timestep 0.5run 100(2)有些命令只有在另一些命令已经被定义的情况下才有效。例如如果你要设定一组原子的温度,那么用group命令定义哪些原子属于这个组才行。(3)还有一种情况就是:命令B要用到命A设置的一些数值,这样你也不能颠倒这两个命令的顺序。每个命令的详细介绍中的Restrictions部分会说明要使用该命令定义的时候哪些命令必须要被预先定义。如果你的输入文件书写的格式有问题,lammps在执行的时候会提示ERROR或者WARNING ,出现类似信息时,你可以到手册的第九章中查询原因。3.2 Parsing rules 输入文件中的每一非空行都被认为是一条命令。lammps中命令的书写是对大小写敏感的,不过一般的命令和参数都是小写的,大写字母用于极少数的情况。(1)命令行后的 & 表示这一行跟下一行是同一条命令。这一点跟FORTRAN很像。(2)命令行最开始的 # 表示这一行在执行过程中被忽略,你可以用它来写注释。(3) $ 是跟声明变量有关系的,我暂时还没用到过,具体请参阅variable命令的详细介绍。(4)命令行被tabs, spaces间隔成各个“words”,注意这里的“words”可以包含字母、数字、下划线、或标点符号。(5)一行中第一个词是命令名,后续的词是相关的参数。(6)双引号内的文字空格被整体地当作一个参数,其中的 # 或 $ 就没有前面说的作用了。3.3 Input script structure lammps的输入文件一般分为4个部分Initialization,Atom definition,Settings,Run a simulation后面的两个部分可以按照需要多次重复。Remember that almost all the commands need only be used if a non-default value is desired.(1)Initialization在你的模拟体系定义之前,一些参数必须要被设置。 相关的命令有:units, dimension, newton, processors, boundary, atom_style, atom_modify。units: 选择单位系统,lammps提供了lj、real、metal三种单位系统dimension: 2d模拟还是3d模拟,默认是3dboundary: 边界条件:周期性边界or自由边界atom_style: 定义你的模拟体系中的原子属性,注意这个style要区分后面设置力场参数时命令里提到的atom type还有,这些命令告诉lammps在你的模拟中使用何种力场:pair_style, bond_style, angle_style, dihedral_style, improper_style。(2)Atom definitionlammps提供3种方式定义原子:通过read_data或read_restart命令从data或restart文件读入,这些文件可以包含分子拓扑结构信息。按照晶格的方式创建原子(不包含分子拓扑信息),你会用到这几个命令:lattice, region, create_box, create_atoms。已经设置好的原子可以用replicate命令复制以生成一个更大规模的模拟体系。(3)Settings原子和分子的拓扑信息定义好后,你要制定一系列的设置:力场系数、模拟参数、输出选项 等等。力场系数可以通过这些命令定义:pair_coeff, bond_coeff, angle_coeff, dihedral_coeff, improper_coeff, kspace_style, dielectric, special_bonds。注意,其实力场系数也可以在data文件中制定,详见read_data命令介绍。各种模拟参数由这些命令设置:neighbor, neigh_modify, group, timestep, reset_timestep, run_style, min_style, min_modify。我觉得fix命令是lammps中很重要的一个命令,它包括很多子命令,可以施加一系列的边界条件、时间积分、诊断选项等等。模拟过程中通过下面的命令制定lammps进行各种计算:compute, compute_modify, variable。输出选项由thermo, dump, restart命令设置。(4)Run a simulation使用run命令开始一个分子动力学模拟,用minimize命令来实施能量最小化(molecular statics),使用temper命令来进行parallel tempering(replica-exchange) simulation。3.4 Commands listed by category 这一节分门别类地列出了lammps的所有命令。注意有些命令的有些选项是特定的lammps package的一部分,也就是说只有在编译lammps的时候包括了这些packages,这些命令才能被使用。默认情况下编译lammps并不包括所有的packages。这些依赖关系在相关命令的详细介绍中Restrictions部分中列出了。Initialization: atom_modify, atom_style, boundary, dimension, newton, processors, unitsAtom definition: create_atoms, create_box, lattice, read_data, read_restart, region, replicateForce fields: angle_coeff, angle_style, bond_coeff, bond_style, dielectric, dihedral_coeff, dihedral_style, improper_coeff, improper_style, kspace_modify, kspace_style, pair_coeff, pair_modify, pair_style, pair_write, special_bondsSettings: communicate, dipole, group, mass, min_modify, min_style, neigh_modify, neighbor, reset_timestep, run_style, set, shape, timestep, velocityFixes: fix, fix_modify, unfixComputes: compute, compute_modify, uncomputeOutput: dump, dump_modify, restart, thermo, thermo_modify, thermo_style, undump, write_restartActions: delete_atoms, delete_bonds, displace_atoms, displace_box, minimize, run, temperMiscellaneous: clear, echo, if, include, jump, label, log, next, print, shell, variable (返回本文目录) 6. 解决问题的途径关于使用lammps可能会遇到的一些问题,下面是我遇到解决疑难的一些途径,与大家共享,欢迎补充。可以从这个网页看怎么加入lammps的邮件组,有问题可以发邮件提问。lammps的主要作者:Steve Plimpton,他的email是 材料科学论坛-分子动力学模拟版 不时也会有人讨论lammps。lammps分子动力学模拟学习互助交流,这是一个关于lammps的专门论坛,刚开张没多久,现在人气还不是很旺,希望大家多多去交流lammps学习的心得。另外,我知道有两个和lammps相关的QQ群:37468072-lammps分子动力学19097619-材料研盟I分子动力学(这个群人数已达上限,不太好加入) (返回本文目录) 7. 写在最后面的话以上好多内容直接引自lamm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论