LAMMPS如何在windows编译步骤
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: 365449075 Email: wfc@另外, 我只把这篇文章放在这个由学校提供的个人网页空间. 之前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设置每个层中的原子. (SelectedAtoms中把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.gztar xvf lammps*.tar之后, 你会得到一个名为lammps-*的文件夹(注意, 这里的*是通配符). 最新版本的lammps是用C++写的, 编译之前, 你的linux系统中需要有一个编译器. 抱歉地说, 我忘记ubuntu是否自带这个编译器了, 如果没有的话, 用sudo apt-get install build-essential这个命令安装, 这需要你的系统管理员帐户和密码.下面说ubuntu下编译单机版的lammps的过程(并行的编译我还没去学习, 如果需要, 建议你查阅这个帖子----By hooge.lu).补充说明一点:~lammps/src/MAKE目录下的makefile.serial首行注释为“# serial = RedHat Linux box, icc, no MPI, no FFTs”这表示默认的C++编译器为Intel 的icc, 如果你按照前述安装了build-essential, 需要你将该文件中以下几行中出现的两个icc改为gcc然后保存, 再进行编译.CC = iccCCFLAGS = -O -I../STUBS -DFFT_NONEDEPFLAGS = -MLINK = iccLINKFLAGS = -O -L../STUBSUSRLIB = -lmpiSYSLIB = -lstdc++ARCHIVE = arARFLAGS = -rcSIZE = size首先到~lammps/src/STUBS目录下, 输入make, 回车.然后返回到~lammps/src/目录下, 输入make serial, 回车.好了, 现在你会看到屏幕上的字幕流, 表示lammps正在被编译. 喝口茶, 等会儿, 剩下的事情ubuntu会帮你搞定. 如果成功编译, 在~lammps/src/目录下, 会生成了一个名为lmp_serial的可执行文件, 计算, 就是靠它了. (返回本文目录)作者:duxiao31503. 如何使用lammps进行计算先简要地说说lammps的运行过程:lammps本身没有图形界面, 模拟计算的过程都是在linux终端执行. 计算的时候, 需要用户写一个输入文件(input script), 可能还需要一个data 文件, 至于如何写输入文件, 我们稍后讨论.假设你已经写好了这个输入文件, 文件名为, 把这个 文件(如果有data文件的话, 连同data文件)和在步骤2中编译得到的lmp_serial放在同一个目录下, 如~/Desktop/compute/. 从终端进入到这个目录, 所需要的命令是:cd ~/Desktop/compute 然后, 在终端输入 ./lmp_serial < 回车. 你就会发现lammps开始计算了. 就这么简单.lammps的输出文件主要可以分为三种: 一是mmps, 这里面记录了整个计算过程屏幕上显示的所有信息, 更详细的请参照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手册.mands这一章描述了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 structurelammps的输入文件一般分为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命令来进行paralleltempering(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是sjplimp@材料科学论坛-分子动力学模拟版不时也会有人讨论lammps.lammps分子动力学模拟学习互助交流, 这是一个关于lammps的专门论坛, 刚开张没多久, 现在人气还不是很旺, 希望大家多多去交流lammps学习的心得.SimuWorld另外, 我知道有两个和lammps相关的QQ群:37468072----lammps分子动力学19097619----材料研盟I分子动力学(这个群人数已达上限, 不太好加入) (返回本文目录)===================================================================== =====7. 写在最后面的话以上好多内容直接引自lammps官方网页, 那就按照它的规则, 在这里再次标注出其网址:/提醒:感谢lammps的作者们为我们无私的奉献了这么一款很好的代码, 如果你要发表的论文用到了lammps做计算, 请认真阅读下面的内容.What if I write a paper using LAMMPS results?Please cite the paper that describes LAMMPS and include a pointer to the LAMMPS WWW Site .Details are discussed in this section of the LAMMPS documentation.If you send me a citation for your paper, we'll include it on the Publications page of the LAMMPS WWW Site . Ditto for a picture or movie for the Images page.关于步骤5中lammps命令的讲解, 限于本人的水平, 不可能讲的很详细. 怎么说呢, 前几天在群中讨论呢, 打算以后组织一下全部翻译lammps的手册, 可是我这几天写这个“指南”, 心里又有了一些感触, 我不是很赞成翻译lammps手册了, 不是我偷懒或是逃避什么, 原因如下: 翻译lammps手册, 看似新手用起来很方便, 其实只是表面现象, 这培养了人的惰性. 我个人觉得, 不管你英文水平怎么样, 你都是应该去看英文手册的, lammps手册中的英文基本没有太复杂的句型, 可能有些比较专业的名词你没见过, 但是我想英文水平高一点的人看手册也要不停地查字典的. 还有就是, 翻译了手册, 你相信它的准确性吗? 我在大四上学期是学习Fluent的, 当时清洁能源网是组织人把Fluent 的帮助文档翻译完了的. 的确, 它帮助我很快的学习了Fluent的基本应用. 但是我不敢100%的相信他们的翻译, 我看的时候也是一边看中文一边对照英文的, 既然这样, 翻译的效果就大打折扣了. 如果你的英文水平不好, 看看lammps手册, 也算提高一下阅读能力吧, 毕竟我们做模拟的以后要看的文献绝大多数都是英文的, 而那些文献, 一般是不会有中文翻译的.上面所说的我不赞成lammps手册的翻译, 并不是说我以后就不为lammps的学习交流做什么了. 我的意思是, 没有必要逐字翻译的. 对于某些关键命令的讲解, 还是要翻译的. 还有就是针对各个命令, 写一些使用这个命令的体会, 如:可能会遇到什么问题, 是怎么解决的, 这个命令相关的MD原理的文献推荐等等. 我觉得把功夫下在这方面会比逐字翻译lammps手册要好些, 是吗? 呵呵, 总之, 通过大家的交流来更有效地提到大家对lammps的理解和应用能力是我们共同的目的, 大家多多讨论.整篇“指南”到目前为止, 只是写了一个大体的框架, 以后我会按照我的思路, 结合我继续学习lammps的体会, 继续丰富这篇“指南”的, 尤其是好好写好步骤5, 谢谢大家的关注. (返回本文目录)。
计算机代码LAMMS手册中文解析

Tinker
CHARMM,AMBER,NAMD,NWCHEM,Tinker是专们用于模拟生物分子的;
二、开始
本部分主要描述如何创建和运行LAMMPS;
1.在LAMMPS发行包理含有:
README
LICENSE
Bench:测式任务
Doc:文本
Examples:简单的测试任务
Potentials:嵌入原子方法与力场文件
Make makelist
Make–f linux
Gmake–f mac
2当你使用低水平的makefile时,可能由于对机器的设置不正确,会导致一些错误;假如你的平台叫“foo”,的话,你将要在MAKE目录中创建一个;使用任何一个与你机器相近的文件作为开始总是一个不错的选择;
3如你在链接的时候出现库丢失或少了依赖关系的话,可能是由于:
各种附加边界条件和约束
积分器:
Velocity-verlet积分器
Brown积分器
rRESPA继承时间延化积分器
刚体积分器
共轭梯度或最束下降算法能量最小化器
输出:
命令:dump, restart
热力学信息日志
原子坐标,速度和其它原子量信息的文本dump文件
二进制重启文件
各原子量包括:能量,压力,中心对称参数,CAN等
粗粒化作用势:DPD, GayBerne, Resquared, Colloidal, DLVO
LAMMPS手册-中文版讲解

LAMMPS手册-中文解析一、简介本部分大至介绍了LAMMPS的一些功能和缺陷。
1.什么是LAMMPS?LAMMPS是一个经典的分子动力学代码,他可以模拟液体中的粒子,固体和汽体的系综。
他可以采用不同的力场和边界条件来模拟全原子,聚合物,生物,金属,粒状和粗料化体系。
LAMMPS可以计算的体系小至几个粒子,大到上百万甚至是上亿个粒子。
LAMMPS可以在单个处理器的台式机和笔记本本上运行且有较高的计算效率,但是它是专门为并行计算机设计的。
他可以在任何一个按装了C++编译器和MPI的平台上运算,这其中当然包括分布式和共享式并行机和Beowulf型的集群机。
LAMMPS是一可以修改和扩展的计算程序,比如,可以加上一些新的力场,原子模型,边界条件和诊断功能等。
通常意义上来讲,LAMMPS是根据不同的边界条件和初始条件对通过短程和长程力相互作用的分子,原子和宏观粒子集合对它们的牛顿运动方程进行积分。
高效率计算的LAMMPS通过采用相邻清单来跟踪他们邻近的粒子。
这些清单是根据粒子间的短程互拆力的大小进行优化过的,目的是防止局部粒子密度过高。
在并行机上,LAMMPS采用的是空间分解技术来分配模拟的区域,把整个模拟空间分成较小的三维小空间,其中每一个小空间可以分配在一个处理器上。
各个处理器之间相互通信并且存储每一个小空间边界上的”ghost”原子的信息。
LAMMPS(并行情况)在模拟3维矩行盒子并且具有近均一密度的体系时效率最高。
2.LAMMPS的功能总体功能:可以串行和并行计算分布式MPI策略模拟空间的分解并行机制开源高移植性C++语言编写MPI和单处理器串行FFT的可选性(自定义)可以方便的为之扩展上新特征和功能只需一个输入脚本就可运行有定义和使用变量和方程完备语法规则在运行过程中循环的控制都有严格的规则只要一个输入脚本试就可以同时实现一个或多个模拟任务粒子和模拟的类型:(atom style命令)原子粗粒化粒子全原子聚合物,有机分子,蛋白质,DNA联合原子聚合物或有机分子金属粒子材料粗粒化介观模型延伸球形与椭圆形粒子点偶极粒子刚性粒子所有上面的杂化类型力场:(命令:pair style, bond style, angle style, dihedral style, improper style, kspace style)对相互作用势:L-J, Buckingham, Morse, Yukawa, soft, class2(COMPASS), tabulated.带点对相互作用势:Coulombic, point-dipole.多体作用势:EAM, Finnis/Sinclair EAM, modified EAM(MEAM), Stillinger-Weber, Tersoff, AIREBO, ReaxFF粗粒化作用势:DPD, GayBerne, Resquared, Colloidal, DLVO介观作用势:granular, Peridynamics键势能:harmonic, FENE, Morse, nonlinear, class2, quartic键角势能:harmonic, CHARMM, cosine, cosine/squared, class2(COMPASS)二面角势能:harmonic, CHARMM, multi-harmonic, helix, OPLS, class2(COMPASS) 不合理势能:harmonic, CVFF, class2(COMPASS)聚合物势能:all-atom, united-atom, bead-spring, breakable水势能:TIP3P,TIP4P,SPC隐式溶剂势能:hydrodynamic lubrication, Debye长程库伦与分散:Ewald, PPPM, Ewald/N(针对长程L-J作用)可以有与普适化力场如CHARMM,AMBER,OPLS,GROMACS相兼容的力场可以采用GPU加速的成对类型杂化势能函数:multiple pair, bond, angle, dihedral, improper potentials(多对势能处于更高的优先级)原子创建:(命令:read_data, lattice, create-atoms, delete-atoms, displace-atoms, replicate)从文件中读入各个原子的坐标在一个或多个晶格中创建原子删除几何或逻辑原子基团复制已存在的原子多次替换原子系综,约束条件,边界条件:(命令:fix)二维和三维体系正角或非正角模拟空间常NVE,NVT,NPT,NPH积分器原子基团与几何区域可选择不同的温度控制器有Nose/Hoover和Berendsen压力控制器来控制体系的压力(任一维度上)模拟合子的变形(扭曲与剪切)简谐(unbrella)束缚力刚体约束摇摆键与键角约束各种边界环境非平行太分子动力学NEMD各种附加边界条件和约束积分器:Velocity-verlet积分器Brown积分器rRESPA继承时间延化积分器刚体积分器共轭梯度或最束下降算法能量最小化器输出:(命令:dump, restart)热力学信息日志原子坐标,速度和其它原子量信息的文本dump文件二进制重启文件各原子量包括:能量,压力,中心对称参数,CAN等用户自定义系统宽度或各原子的计算信息每个原子的时间与空间平均系统宽量的时间平均原子图像,XYZ,XTC,DCD,CFG格式数据的前处理与后处理:包里提供了一系列的前处理与后处理工具另外,可以使用独立发行的工具组pizza.py, 它可以进行LAMMPS模拟的设置,分析,作图和可视化工作。
lammps使用手册

lammps使用手册一、简介LAMMPS是一款功能强大的分子动力学模拟软件,可用于研究固体、液体、气体以及它们之间的相互作用。
本手册旨在帮助用户了解LAMMPS的基本使用方法和技巧,以便更好地进行模拟研究。
二、安装与配置1.下载安装包:从LAMMPS官方网站下载适合您操作系统的安装包。
2.安装软件:按照安装指南完成软件安装。
3.配置环境:根据软件要求配置计算环境,包括编译器、库文件和路径等。
三、基本操作1.启动模拟:使用LAMMPS命令行界面或脚本启动模拟。
2.添加系统参数:设置模拟系统的体积、温度、边界条件等参数。
3.添加粒子:创建粒子,设置其质量、电荷等属性。
4.更新系统:执行时间积分算法,更新粒子运动状态。
5.观察结果:使用可视化工具观察模拟系统的动态变化。
四、常用命令1.`fix`:用于设置固定粒子组或边界条件的命令。
2.`atom_modify`:用于修改粒子属性,如质量、电荷等。
3.`pair_style`:设置粒子之间的相互作用模型。
4.`run`:执行模拟并更新粒子运动状态。
5.`dump`/`restart`:保存或恢复模拟结果。
五、高级功能1.粒子相互作用模型:LAMMPS支持多种粒子相互作用模型,如Lennard-Jones势、Ewald方法等。
2.边界条件:支持不同类型的边界条件,如周期性边界、固定边界等。
3.能量最小化:用于优化粒子分布,降低能量波动。
4.温度控制:通过加热和冷却过程保持系统温度恒定。
5.并行计算:支持多核处理器和分布式计算,提高模拟速度。
六、实例应用1.分子动力学模拟固体晶格结构变化。
2.研究液体流动和粘度。
3.计算材料在不同应力条件下的变形行为。
4.模拟药物在生物体系中的分布和相互作用。
七、常见问题及解决方法1.模拟结果波动较大:检查粒子相互作用模型和边界条件设置是否正确,以及积分算法是否适当。
2.模拟时间步长选择不当:过小的步长可能导致系统不稳定,过大的步长则影响模拟精度。
ambertools windows编译

ambertools windows编译要在Windows上编译AMBER工具,需要按照以下步骤进行操作:1. 安装MinGW编译器AMBER工具使用C++编写,因此需要在Windows上安装MinGW编译器。
MinGW是一个Windows下的GCC编译器套件,可以用来编译C和C++程序。
你可以从MinGW官方网站下载最新版本的MinGW,并按照说明进行安装。
2. 下载AMBER源代码从AMBER官方网站下载最新版本的AMBER源代码,解压缩到本地目录中。
3. 配置环境变量在Windows上,需要将AMBER源代码所在的目录添加到系统环境变量中,以便在命令行终端中直接访问AMBER源代码。
具体操作可以参考以下步骤:- 点击“开始”菜单,选择“计算机”或“此电脑”;- 右键单击“计算机”或“此电脑”,选择“属性”;- 在左侧导航栏中选择“高级系统设置”;- 在弹出的“系统属性”对话框中,选择“环境变量”;- 在“环境变量”对话框中,找到“系统变量”区域中的“Path”变量,双击打开编辑框;- 在编辑框中添加AMBER源代码所在目录的路径,例如:C:\amberTools14;- 点击“确定”按钮保存设置。
4. 构建AMBER工具在命令行终端中进入AMBER源代码所在目录,并执行以下命令构建AMBER工具:```mingw32-make install PREFIX=/usr/local/amber14```其中,/usr/local/amber14是AMBER安装的根目录,你可以根据自己的需要进行修改。
执行完该命令后,AMBER工具就会被成功编译并安装到指定的目录中。
5. 测试AMBER工具在命令行终端中进入AMBER源代码所在目录,并执行以下命令测试AMBER工具:```ab initio pdb```该命令会启动一个交互式界面,让你输入PDB文件的路径和一些参数,然后会自动解析PDB文件并生成初始的分子动力学模拟轨迹。
为知笔记 windows 编译

为知笔记 windows 编译大家好呀!今天咱就来唠唠为知笔记在windows系统下编译这个事儿。
这过程呢,还挺有意思的,不过也有点小麻烦,咱一步步来哈。
一、准备工作。
咱得先把编译需要的工具和环境准备好。
这就好比做饭得先把食材和厨具准备齐了一样,不然可没法下锅。
首先得安装好合适的开发环境。
比如说Visual Studio,这可是个很强大的开发工具,很多windows下的程序开发都少不了它。
你可以去微软的官方网站下载安装包,然后按照提示一步一步安装就行,这个过程一般不会出啥大问题,只要你耐心点,别着急。
还得有对应的编译器,像GCC或者Clang之类的。
不过在windows下用GCC的话,可能得安装MinGW,它能让你在windows上使用GCC编译器。
安装过程也不难,在网上搜搜教程,跟着做就成。
另外,别忘了把为知笔记的源代码下载下来。
一般可以去它的官方代码仓库,比如GitHub上找找看。
找到之后,把代码克隆到本地的一个文件夹里,这样咱就能开始动手编译啦。
二、配置编译环境。
这一步有点像给炒菜的锅调好火候和调料,得让编译环境适合为知笔记的编译。
打开Visual Studio或者你用的其他开发工具,新建一个项目。
然后把刚才下载好的为知笔记源代码添加到项目里。
这时候可能会遇到一些路径问题,别慌,仔细检查一下路径设置,确保代码都能被正确识别。
如果用的是MinGW,还得设置一下环境变量。
这就好比告诉电脑,这个工具在哪里,你得让它能找到才行。
设置环境变量的方法也不难,在系统的环境变量设置里添加MinGW的安装路径就可以啦。
三、开始编译。
在开发工具里找到编译选项,一般就是一个像小锤子一样的图标。
点一下它,编译过程就开始咯。
这时候可能会看到控制台里刷刷刷地输出一堆信息,别紧张,这是正常的,说明编译器在努力工作呢。
不过有时候可能会出现一些错误提示。
这就像做饭的时候突然发现盐放多了一样,得找找原因。
一般错误提示会告诉你哪里出问题了,可能是代码有语法错误,也可能是依赖的库没找到。
lammps

后面的两个部分可以按照需要多次重复
(1) Initialization 在模拟体系定义之前, 一些参数必须要被设置. 相关的命令 有:units, dimension, newton, processors, boundary, atom_style, atom_modify. units: 选择单位系统, lammps提供了lj、real、metal三种单位系 统 dimension: 2d模拟还是3d模拟, 默认是3d boundary: 边界条件:周期性边界or自由边界 atom_style: 定义模拟体系中的原子属性, 注意这个style要区分 后面设置力场参数时命令里提到的atom type
Lammps是一个经典分子动力学代码 能够模拟三种状态中的全部颗粒,通 过使用各种力场和边界条件也能模拟 原子的、聚合的、生物的、金属的、 颗粒的和粗精度系统。
Lammps软件目前的特点
从势场角度看:建模软物质(生物分子,聚合物),固态 材料(金属,半导体),以及粗粒子和介观材料。更一般的 说是lammps程序是用来建模原子/介观/连续尺度物质以及其 在热、力学、化学条件下的性质的模拟软件,因此是系统化 方法。 Lammps程序运行环境:单CPU和多CPU,采用的是消息响 应和模拟域的空间分解并行机制。
③ 已经设置好的原子可以用replicate命令复制以生成一个更大 规模的模拟体系.
(3)Settings 原子和分子的拓扑信息定义好后, 要制定一系列的设置: 力场系 数、模拟参数、输出选项 等等. 力场系数可以通过这些命令定义: pair_coeff, bond_coeff, angle_coeff, dihedral_coeff, improper_coeff, kspace_style, dielectric, special_bonds. 其实力场系数也可以在data文件中制定. 各种模拟参数由这些命令设置: neighbor, neigh_modify, group, timestep, reset_timestep, run_style, min_style, min_modify. fix命令是lammps中很重要的一个命令, 它包括很多子命令, 可以 施加一系列的边界条件、时间积分、诊断选项等等. 模拟过程中通过下面的命令制定lammps进行各种计算: compute, compute_modify, variable. 输出选项由thermo, dump, restart命令设置.
计算机代码lammps手册中文解析

ALMP—INC变量,包括一些与系统相关的条件选项。
B 3个MPI变量用于指定MPI库。
如你要进行并行计算的话,那么你必须在你的平台上安上MPI库。如你想用MPI内置C++编译器的话,你可以让这三个变量空着,如你不用MPICC的话,那么,你要指定(MPI_INC)文件在哪,MPI(MPI_PATH)库在哪,还有库名(MPI_LIB).
Make linux
Gmake mac
注意,在一个多处理器或多核处理器的平台上你可以进行平行编译,在make命令中使用“-j”选项就可以,这样编译起来会更快一些。
在此过程中不发生错误的话,你可以得到一个类似于lmp-linux的可执行文件。
在编译过程当中将会发生的常见错误:
(1)如果编译过程当中发生错误,并提示不能找到一个含有通配符*为名的文件的话,说明你机器上的make器允许makefile中使用通配符。那就偿式使用gmake。如还不行的话,就试试加入-f选项,用作为make对像。如:
另外,可以使用独立发行的工具组, 它可以进行LAMMPS模拟的设置,分析,作图和可视化工作。
特别功能:
实时的可视化与交互式MD模拟
与有限元方法结合进行原子-连续体模拟
在POEMS库中提供了刚体积分工具
并行裉火
并行复制动力学
对低密度液体直接使用MC模拟
Peridynamic介观建模
目标型与无目标型分子动力学
如果你想自已安装MPI的话,我们建议用或。LAM MPI也可以。如果我的是大平始的话,你的供应商已经为你装上了MPI,其可能比MPICH或LAM更快,你可以把找出来并与之链接。如你用LAM或MPICH,你必需要设置他并编译他使之适合你的平台。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LAMMPS如何在windows编译步骤
(翻译整理Lammps 上海大学上海市应用数学与力学研究所,版权所有,据最新版06年6月份的,原说明在SRC/MAKE/WINDOWS目录下)
2004/11/20(该方法由Jin Ma(Okalahhoma State University )给出,联系Jin.Ma@)
编译环境为微软windows的VC++6.0,不带MPI(并行处理)和FFT算法。
创建一个空的win32控制台工程(win32 console project),添加Src目录下所有的.h文件和.cpp文件到工程。
1.变量的重定义问题
代码中约有80处地方,变量出现重定义问题。
大部分都出现在循环过程中,可以很容易修正。
例如这样的循环:
for (int i=0; i<5; i++){
something
}
for (int i=0; i<5 ;i++ {
something else
}
这种情况在Linux下的g++编译环境中是允许的,但是在VC环境中会认为第二次循环时变量i被重定义,因此变量的范围是不同的。
这在代码中有很多,因此在编译错误修正时只需要把定义整形变量i的定义放在语句中,而不是放在循环体中。
2.fft问题
在文件fft3d.h的开头增加
#ifndef FFT_NONE
#define FFT_NONE
#endif
取消FFT功能的编译,即不编译文件
3. input文件的修改
在input文件中修改下面的语句
//#include "unistd.h" (注销)
#include "direct.h" (增加)
4. 处理MPI问题
把文件mpi.h 和 mpi.cpp(在STUBS目录内)包括进工程中来,并且在mpi.cpp文件中注释掉语句
//#include <sys/time.h> (和Linux系统下的取时间有关,windows不支持)
同时注释调所有和时间有关的语句,即函数MPI_Wtime()中的原始代码,保持函数格式,让内容为空,并给予返回值为0(return 0;)
5. 创建系统文件system.cpp的修改
由于输入说明列表在linux和windows下的某些不同,在文件中system.cpp作如下修改
行 83 : int iarg = 2; (修改,默认输入的问题)
行 172 : inflag=1;(增加改行不知道原因暂时)
(原因:因为在dos行命令下运行程序时,给出的变量数目在G++环境和VC++环境中有所不同,也可能和MPI相关,这个不同只是其中之一,一旦上面说的修改成功,程序输入命令的个数才正确)
之后2005年1月修改。
4-a.输入文件问题(由Tim Lau补充
在variable.cpp文件中进行修改头文件
//#include "unistd.h"
#include "direct.h"
#include "windows.h"
另外修改 usleep(100000)为 Sleep(100)
修改说明:因为当Sleep发生在毫秒时而usleep发生在微妙,所以这个值被1000分开。
(不明白何意思)
7. 新版erfc错误
新版本的LAMMPS程序会调用下列函数而报错double erfc(double),该函数属于GNU 的C库函数,在VC环境是不存在的。
有三种修改方法:
一从其他的库中寻找到函数erfc()
二是因为该函数是被pair_modify 表选项调用的,我们可以在该函数的表选项中把值设为0,避免调用该函数
三是自己动手写该函数
补充:在新版的目录下有这样的两个文件erfc.h, erfc.cpp已经被加入到工程中,只需要在所有使用到erfc()函数的文件头中增加调用命令#include "erfc.h"即可。
注意这两个函数为经仔细测试,需谨慎使用。
8. 重建工程,指定正确的输入文件运行程序,windows下的结果可能会和unix环境的结果有所不同,请注意。
(Jin Ma jin.ma@ Oklahoma State University March 7, 2005)
最近增加:
如果要增加MPI和FFT,则如下(由Timothy Lau 联系ttl@给出,相关步骤参考之前的说明
如果你想使用FFT,先在载源码FFTW 2.1.5,然后解压(dump)全部的文件到和LAMMPS相同的目录下,然后包括所有FFTW的文件(.c文件和.h文件)到工程中,接下来修改上述第三个关于FFTW 的问题。
在文件fft3d.h中修改为
#ifndef FFT_FFTW
#define FFT_FFTW
#endif
你必须小心的检查visual stidoe 编译中关于“WIN32”变量的定义,尽管visual studio可能会自动定义它,涉及到文件 fftw.h的行137处。
如果你还要增加MPI功能,即在微软visual vistdo环境下的,多核处理器或者windows结点结构(cluster)并行机上运行程序。
已经知道MPICH 2(至少是IA32版)在visual环境下可以和lammps 编译成功。
代替上述步骤中第5个问题的修改,用户可以增加MPICH2\include目录(该目录在用户安装了mpich2 以后会自动生成)作为VC编译环境的附加库目录(主要为包括进文件mpi.h),同时增加MPICH2\lib作为库的连接环境,它指定文件mpi.lib的连接。
(关于MPI库的连接请参考相关MPI 的说明和书籍)。