Lammps学习指南 小木虫.docx
《Lammps学习指南 小木虫.docx》由会员分享,可在线阅读,更多相关《Lammps学习指南 小木虫.docx(14页珍藏版)》请在冰豆网上搜索。
![Lammps学习指南 小木虫.docx](https://file1.bdocx.com/fileroot1/2023-2/4/49b9e89c-094c-49bc-bfbc-1f7cf3518e7e/49b9e89c-094c-49bc-bfbc-1f7cf3518e7e1.gif)
Lammps学习指南小木虫
【转帖】Lammps学习指南1
作者:
duxiao3150 收录日期:
2009-12-11 发布日期:
2009-12-11
本文结构:
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:
365449075Email:
wfc@
另外,我只把这篇文章放在这个由学校提供的个人网页空间.之前QQ空间的那篇文章,因为对其内容改动较大,故我已将其删除.我并不反对转载,(先自我陶醉一下下,可是会有吗?
呵呵)但是转载之前,请注意:
(1) 文章中的一些表述我尚不肯定正确与否.所以转载之前,请你负责任地认真读完这篇文章并确认你是否认可我的表述.如果发现错误,请及时联系我,谢谢先了.
(2) 我知道有些论坛的用户可以设置回复或者付出金币or积分等才能查看某些帖子,我坚决反对这篇文章被这么做.
(3) 本文没有所谓的版权,完全是分享性质的.转载的时候,没有必要著上是我写的,可是我不希望有一天看到这篇指南成了另外的一个名字的原创.如果你发现文中的错误并做了修改(最好也通知我),那样我们可以算是这篇文章的共同作者.
(4) 严禁本文被用作其它用途.
我还要再次重申,我不想写成像教科书一样的东西.我写这篇指南的意图也绝对不是“哦,你是lammps新手吧,那你按照我说的做吧.”那我岂不成了教父了?
呵呵.要知道,这篇文章的作者只不过是一个3个月前才知道世上有lammps这款代码的家伙,他根本就没有完全读完和读懂lammps手册,他对MD的基本理论了解的是少之又少.我只不过是想结合我学习lammps的过程,写一下我的体会和建议,供新手参考.如果你觉得这个指南对你有用,那固然很好;但是如果你看后觉得我说的都是屁话,那也很好,你可以按照另外的思路去学习lammps,同时,你还可以按照我的联系方式大骂我一顿,我也会洗耳恭听的.
如果这篇文章真的对lammps的初学者有些许帮助,那我将感到十分的欣慰. (返回本文目录)
==========================================================================
1.首先确定lammps是不是适合你
可以从以下两个网页找到答案:
http:
//lammps.sandia.gov/features.html
http:
//lammps.sandia.gov/non_features.html
如果你觉得看英文很不爽,这里有一个中文翻译----Byhooge.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->NewMolecule…Browse…thenLoad读入xyz文件
Graphics->Representation…
CreateRep新建层(VMD中对同一个Rep中所有原子的大小颜色同时控制,所以要对不同种类的原子分别设置显示效果,需要新建几个Rep)
Selections结合Keywords和Value设置每个层中的原子.(SelectedAtoms中把all删除, 然后双击某个Keywords如type,然后再在Value栏里双击某个种类,之后Apply)
Drawstyle中ColoringMethod建议选择ColorID,然后在后面选择颜色;DrawingMethod建议选择Beads,然后在SphereScale和SphereResolution中调整球的大小和清晰度
计算结果的数据处理在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中你所需要的绝大多数软件都可以用sudoapt-getinstall这个命令通过网络安装,不会有Windows里面烦死人的软件破解等等问题.一段时间之后,你就会觉得ubuntu.linux带给你的美妙的享受,它的那种自由和分享的理念,这,绝对不是Windows可以给你的.
在ubuntu中文论坛里,你可以学习到很多关于ubuntu的知识,解决你在使用ubuntu过程中可能会遇到的很多难题.关于ubuntu的安装,你也可以请查阅“初学者园地”的帖子,尤其是那几个置顶帖.
好了,如果你拥有了linux环境,下面就开始我们体验lammps的历程.
到这里下载lammps,建议你下载LAMMPSupgrade.需要说明的是,lammps更新很快,几乎每天都有源代码的修改.所以,你有必要经常关注lammps官方网页.
下载之后,你会得到一个*.tar.gz的压缩文件包,在linux的终端,用以下的命令解压.
gunziplammps*.tar.gz
tarxvflammps*.tar
之后,你会得到一个名为lammps-*的文件夹(注意,这里的*是通配符).最新版本的lammps是用C++写的,编译之前,你的linux系统中需要有一个编译器.抱歉地说,我忘记ubuntu是否自带这个编译器了,如果没有的话,用sudoapt-getinstallbuild-essential这个命令安装,这需要你的系统管理员帐户和密码.
下面说ubuntu下编译单机版的lammps的过程(并行的编译我还没去学习,如果需要,建议你查阅这个帖子----Byhooge.lu).
补充说明一点:
~lammps/src/MAKE目录下的makefile.serial首行注释为“#serial=RedHatLinuxbox,icc,noMPI,noFFTs”这表示默认的C++编译器为Intel的icc,如果你按照前述安装了build-essential,需要你将该文件中以下几行中出现的两个icc改为gcc然后保存,再进行编译.
CC=icc
CCFLAGS=-O-I../STUBS-DFFT_NONE
DEPFLAGS=-M
LINK=icc
LINKFLAGS=-O-L../STUBS
USRLIB=-lmpi
SYSLIB=-lstdc++
ARCHIVE=ar
ARFLAGS=-rc
SIZE=size
首先到~lammps/src/STUBS目录下,输入make,回车.
然后返回到~lammps/src/目录下,输入makeserial,回车.
好了,现在你会看到屏幕上的字幕流,表示lammps正在被编译.喝口茶,等会儿,剩下的事情ubuntu会帮你搞定.如果成功编译,在~lammps/src/目录下,会生成了一个名为lmp_serial的可执行文件,计算,就是靠它了. (返回本文目录)
作者:
duxiao3150
3.如何使用lammps进行计算
先简要地说说lammps的运行过程:
lammps本身没有图形界面,模拟计算的过程都是在linux终端执行.计算的时候,需要用户写一个输入文件(inputscript),可能还需要一个data文件,至于如何写输入文件,我们稍后讨论.
假设你已经写好了这个输入文件,文件名为in.name,把这个in.name文件(如果有data文件的话,连同data文件)和在步骤2中编译得到的lmp_serial放在同一个目录下,如~/Desktop/compute/.从终端进入到这个目录,所需要的命令是:
cd~/Desktop/compute然后,在终端输入./lmp_serial 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!
”我很好奇这四个字母是什么意思,他解释说:
“ReadTheFuckingManual!
”呵呵,看来,读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和第二章Gettingstarted.部分内容步骤1和步骤2中都有所涉及了,但愿我在前面两个步骤中的讲解多少能帮助你提高这部分的阅读速度.但是,毕竟也只是部分内容,没有涉及到的部分里面也有一些很重要的内容,但是我个人感觉可能有些也用不到,可以有选择地看一下.
第三章Comannds是第22页到第27页共6页的内容,建议你快速扫一眼之后就去看下一章吧.为了避免步骤4中的内容太多了,我们将在步骤5中单独来详细讨论这一章.
第四章How-todiscussions,里面的这14小节,建议你仔细看一下,对于不同的问题,有几个小节讲述的内容还是很重要的.其实这部分在manual.pdf中也就12页.
针对第五章(3页)提到的Exampleproblem,顺便说一下,在步骤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中的算例以及下面的两个网页:
http:
//lammps.sandia.gov/pictures.html,http:
//lammps.sandia.gov/movies.html.
(2)仔细阅读你要进行的模拟所需要的命令
lammps功能强大,可以做各个方面的分子动力学模拟,但是针对一个具体的MD模拟过程,可能只需要用到其中的部分命令.
通过对手册3.3和3.4节的学习,已经对手册Commands这部分的通览,你应该能知道哪些命令在你的这次模拟中是有用的.然后,你就可以逐字地仔细阅读那些命令了,遇到MD原理相关的而你不懂的,要认真去查阅相关资料弄懂(把薄手册读厚).这个时候,可不要再抱有任何通览阶段的心态,如果你错过或是误解了一句话,都可能对你的计算