lammps学习friction程序

合集下载

(完整版)LAMMPS手册学习.doc

(完整版)LAMMPS手册学习.doc

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学习指南 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, 谢谢大家的关注. (返回本文目录)。

lammps各种命令讲解

lammps各种命令讲解

作者: 御剑江湖收录日期: 2011-03-31 发布日期: 2011-03-24 Commands描述了lammps输入文件的格式和在定义lammps模拟所需要的命令.1.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 , 出现类似信息时, 你可以到手册的第九章中查询原因.1.2 Parsing rules输入文件中的每一非空行都被认为是一条命令. lammps中命令的书写是对大小写敏感的, 不过一般的命令和参数都是小写的, 大写字母用于极少数的情况.(1) 命令行后的& 表示这一行跟下一行是同一条命令. 这一点跟FORTRAN很像.(2) 命令行最开始的# 表示这一行在执行过程中被忽略, 你可以用它来写注释.(3) $ 是跟声明变量有关系的, 我暂时还没用到过, 具体请参阅variable命令的详细介绍.(4) 命令行被tabs, spaces间隔成各个“words”, 注意这里的“words”可以包含字母、数字、下划线、或标点符号.(5) 一行中第一个词是命令名, 后续的词是相关的参数.(6) 双引号内的文字空格被整体地当作一个参数, 其中的# 或$ 就没有前面说的作用了.1.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命令来进行parallel tempering(replica-exchange) simulation.1.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作者:御剑江湖一、各种文件的介绍:1 in file:建立该文件以便程序的写入2 log file:写入状态信息(if the switch is used?)3 screen file 决定结果的是否进行屏幕输出4 var name file 定义一个变量,name指变量名,可为字母也可为字符串,形式$x / $ {abc}二、屏幕输出:结果显示在屏幕上,同时在log file 中。

lammps各种命令讲解

lammps各种命令讲解

作者: 御剑江湖收录日期: 2011-03-31 发布日期: 2011-03-24 Commands描述了lammps输入文件的格式和在定义lammps模拟所需要的命令.1.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 , 出现类似信息时, 你可以到手册的第九章中查询原因.1.2 Parsing rules输入文件中的每一非空行都被认为是一条命令. lammps中命令的书写是对大小写敏感的, 不过一般的命令和参数都是小写的, 大写字母用于极少数的情况.(1) 命令行后的& 表示这一行跟下一行是同一条命令. 这一点跟FORTRAN很像.(2) 命令行最开始的# 表示这一行在执行过程中被忽略, 你可以用它来写注释.(3) $ 是跟声明变量有关系的, 我暂时还没用到过, 具体请参阅variable命令的详细介绍.(4) 命令行被tabs, spaces间隔成各个“words”, 注意这里的“words”可以包含字母、数字、下划线、或标点符号.(5) 一行中第一个词是命令名, 后续的词是相关的参数.(6) 双引号内的文字空格被整体地当作一个参数, 其中的# 或$ 就没有前面说的作用了.1.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命令来进行parallel tempering(replica-exchange) simulation.1.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作者:御剑江湖一、各种文件的介绍:1 in file:建立该文件以便程序的写入2 log file:写入状态信息(if the switch is used?)3 screen file 决定结果的是否进行屏幕输出4 var name file 定义一个变量,name指变量名,可为字母也可为字符串,形式$x / $ {abc}二、屏幕输出:结果显示在屏幕上,同时在log file 中。

ubuntu下并行安装lammps教程(需联网)超简单 亲测成功,适合小白

ubuntu下并行安装lammps教程(需联网)超简单 亲测成功,适合小白

ubuntu下并行安装lammps教程(需联网)超简单亲测成功,适合小白写在前面的话:手册很重要,一定要看手册!!!本人小白一个,没用过任何linux系统,前天才安装了ubuntu,linux系统和win系统有很大的区别,很多操作需要在终端中进行,因此想要安装lammps,最好先熟悉一下linux的基本操作,然后根据手册进行编译安装。

安装过程中我走了很多弯路,下载lammps以后就先看了看手册,关于安装那一部分写的很详细,但由于对linux基本操作都不熟悉,以至于根本看不懂,没办法,只能按照网上的教程安装,但装了一天也没成功,最后舍弃所有教程,还是自己根据手册安装成功的。

熟悉了linux的基本操作以后就能发现,如何安装lammps手册上其实说的很清楚了,很多教程都走了弯路,进行了很多不必要的步骤,特别是对ubuntu系统的用户来说。

这个教程意在帮助ubuntu和lammps小白少走弯路,我尽可能详细地列出了安装过程中的每一个步骤,并对步骤进行了说明,希望能帮助小白们在了解linux基本操作的同时完成lammps的安装。

但最好还是根据手册自行安装,因为手册上说的真的很详细。

由于我也是小白,加上写作水平有限,难免有纰漏,有不足之处,还请见谅。

lqjunzi2016.6.2首先安装ubuntu系统,不会的自行查看相关教程1.进入安装好的ubuntu系统,先打开software updater(桌面左下角有个类似Windows开始菜单的图表,点击,搜索updater)更新系统,不是必要的,但不更新可能会出现问题,更新比较慢,要联网下载很多东西2.打开终端(以下在终端中所需输入指令均高亮标出),系统默认是没有root密码的,但安装lammps时需要在root账户下进行,创建初始root密码的命令如下:lqjunzi@lqjunzi:~$ sudo passwd root #输入sudo passwd root按回车,可以鼠标复制粘贴,但ctrl+c不管用[sudo] lqjunzi 的密码: #输入密码,回车(输完指令按回车执行,后面省略),输入过程不显示输入新的 UNIX 密码: #再次输入密码,输入过程不显示重新输入新的 UNIX 密码: #再次输入密码,输入过程不显示passwd:已成功更新密码 #提示root密码更新成功lqjunzi@lqjunzi:~$ su #输入su,回车Password: #输入密码,回车root@lqjunzi:/home/lqjunzi# #可以看到最前面的用户名已经由lqjunzi变成啦root,而后面的~$也变成了#,#是在root下操作的标志3.下载lammps安装包,下载后的安装包默认在/home/lqjunzi/Downloads目录下,这里的lqjunzi是安装系统时的用户名,习惯的将下载后的lammps-stable.tar.gz复制至/home/lqjunzi/sw 目录下(完全可以不复制,就在Downloads下操作,只是个人习惯,如不移动则后面操作目录相应改变)root@lqjunzi:/home/lqjunzi# mkdir sw #在/home/lqjunzi目录下建立sw文件夹root@lqjunzi:/home/lqjunzi# cd Downloads #进入 Downloads文件夹root@lqjunzi:/home/lqjunzi/Downloads# cp lammps-stable.tar.gz ../sw #复制到vm目录下,文件名在输入的时候可以输入lamm后按table键,会自动补全剩余文件名,简化输入root@lqjunzi:/home/lqjunzi/Downloads# cd ../sw #进入sw目录root@lqjunzi:/home/lqjunzi/sw# gunzip lammps-stable.tar.gz #解压root@lqjunzi:/home/lqjunzi/sw# tar xvf lammps-stable.tar #解压root@lqjunzi:/home/lqjunzi/sw# ls #显示该文件夹下的文件/文件夹。

lammps学习指南(可编辑修改word版)

lammps学习指南(可编辑修改word版)

lammps学习指南(可编辑修改word版)温馨提示:(1)点击标题可直接到相关的“章节”。

(2)为避免混淆,上面的各“章”,在本文中用“步骤2”、“步骤5”这样的词代指;而文中其它地方出现的“章节”是指lammps 手册中的章节。

(3)文中跟某些名词相关的网页已加注超链接,直接点击可浏览该页面以获得更详尽的信息。

0. 写在最开始的话从2007 年5 月初开始接触和学习lammps,时至今日,依然对lammps 存有很多疑惑。

如同一个刚入门的工匠面对着一台功能强大的复杂机器,不知所措。

虽然还有好多好多的东西要学习,但是也已经了解了一些最最基本的东西了。

我可以去帮助那些刚刚入门的人,正如我刚刚开始学习lammps 时诸位热心网友对我的帮助。

现在,我写一写自己知道的东西,希望对lammps 的新手有所帮助,不当之处,真诚地希望各位读者多多指正。

我写的这点儿东西,使用者仅限于使用lammps 的新手,而且里面只讲到了ubuntu 下编译lammps 的单机版,没有涉及并行版的编译。

我希望这个“指南”会帮他们更快地了解和学习lammps。

如果你已经在使用lammps 了,我觉得这个“指南”是不会对你有什么帮助的。

不过,对于高手来说,如果你有时间,我还是希望你能看完这篇,因为我接触lammps 和MD 的时间都不长,我怕我的某些错误会误导新手。

所以,希望大家一起努力,完善这个指南。

对这个“指南”有任何的建议,请联系我,联系方式如下:QQ: 365449075Email: wfc@/doc/8815552588.html,另外,我只把这篇文章放在这个由学校提供的个人网页空间。

之前QQ 空间的那篇文章,因为对其内容改动较大,故我已将其删除。

我并不反对转载,(先自我陶醉一下下,可是会有吗?呵呵)但是转载之前,请注意:(1)文章中的一些表述我尚不肯定正确与否。

所以转载之前,请你负责任地认真读完这篇文章并确认你是否认可我的表述。

lammps各种命令讲解

lammps各种命令讲解

作者: 御剑江湖收录日期: 2011-03-31 发布日期: 2011-03-24 Commands描述了lammps输入文件的格式和在定义lammps模拟所需要的命令.1.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 , 出现类似信息时, 你可以到手册的第九章中查询原因.1.2 Parsing rules输入文件中的每一非空行都被认为是一条命令. lammps中命令的书写是对大小写敏感的, 不过一般的命令和参数都是小写的, 大写字母用于极少数的情况.(1) 命令行后的& 表示这一行跟下一行是同一条命令. 这一点跟FORTRAN很像.(2) 命令行最开始的# 表示这一行在执行过程中被忽略, 你可以用它来写注释.(3) $ 是跟声明变量有关系的, 我暂时还没用到过, 具体请参阅variable命令的详细介绍.(4) 命令行被tabs, spaces间隔成各个“words”, 注意这里的“words”可以包含字母、数字、下划线、或标点符号.(5) 一行中第一个词是命令名, 后续的词是相关的参数.(6) 双引号内的文字空格被整体地当作一个参数, 其中的# 或$ 就没有前面说的作用了.1.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命令来进行parallel tempering(replica-exchange) simulation.1.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作者:御剑江湖一、各种文件的介绍:1 in file:建立该文件以便程序的写入2 log file:写入状态信息(if the switch is used?)3 screen file 决定结果的是否进行屏幕输出4 var name file 定义一个变量,name指变量名,可为字母也可为字符串,形式$x / $ {abc}二、屏幕输出:结果显示在屏幕上,同时在log file 中。

Lammps程序

Lammps程序
第10页/共49页
• Every 的作用是将一个run分成一系列较短的runs variable q equal x run 6000 every 2000 "print Coord = $q" 每运行2000步输出一次某原子的x坐标值
第11页/共49页
• 要设定一组原子的温度, 那么用group命令定义哪些原子属于这个组才行; • 每个命令的详细介绍中的Restrictions部分会说明要使用该命令定义的时候哪些
第20页/共49页
• temperature = degrees K 温度 • pressure = bars 压力 • dynamic viscosity = Poise 动力学粘性系数:泊 • charge = multiple of electron charge (+1.0 is a proton) 电荷:电荷整
第15页/共49页
• Settings: communicate, dipole, group, mass, min_modify, min_style, neigh_modify, neighbor, reset_timestep, run_style, set, shape, timestep, velocity;
或标点符号.
第17页/共49页
• (5) 一行中第一个词是命令名, 后续的词是相关的参数. • (6) 双引号内的文字空格被整体地当作一个参数, 其中的 # 或 $ 就没有前面说的
作用了.
第18页/共49页
Pure Cu crystal
第19页/共49页
• (1) Initialization
第4页/共49页
(3)Settings
• 原子和分子的拓扑信息定义好后, 你要制定一系列的设置: 力场系数、模拟参数、输出选项 等等. ①力场系 数可以通过这些命令定义: pair_coeff, bond_coeff, angle_coeff, dihedral_coeff, improper_coeff, kspace_style, dielectric, special_bonds. 注意, 其实力场系数也可以在data文件中制定; ②各种模拟 参数由这些命令设置: neighbor, neigh_modif y, group, timestep, reset_timestep, run_style, min_style, min_modify.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#文件结构#Initialization#Atom definition#Settings#Run a simulation#注意本程序由于默认的单位体制是LJ# 2d friction simulation#初始化dimension 2#维数boundary p s p#边界条件 boundary x y zx,y,z =porsorform, one or two lettersp is periodicf is non-periodic and fixeds is non-periodic and shrink-wrappedm is non-periodic and shrink-wrapped with a minimum values为收缩边界(自由边界),用于有限尺寸的维度,随原子移动而改变,原子不会跑出边界;f为固定边界,同样用于有限尺寸的维度,模拟时原子可能跑出边界,跑出则程序终止;p 为周期边界,原子可以周期穿过盒子边界。

m为柔性边界,允许边界上的粒子有微小移动以反映内层原子的作用力施加到它们身上的情况。

atom_style atomic#atomic原子模式(用于粗粒液体,固体和金属的模拟)。

Define what style of atoms to use in a simulation 定义模拟体系中的原子属性。

用比需要的范围大的类型。

neighbor 0.3 bin#建近邻表参数(r+rc),rc为力的截断距离,缓冲距离r=0.3sigma(σ),bin表示为近邻表类型。

所有截止距离等于它的力的截断距离加上缓冲距离的原子对都被存储在列表里。

其值的选择取决于单位制。

Syntax:neighbor skin styleThis command sets parameters that affect the building of pairwise neighbor lists. skin = extra distance beyond force cutoff (distance units)style =bin or nsq or multineigh_modifydelay 5#间隔5载荷步重新形成近邻表# create geometry#创建初始几何构形lattice hex 0.9#定义晶格类型(二维hex)和Lennard-Jones折算密度0.9region box block 0 50 0 22 -0.25 0.25#定义模拟盒子(区域)的大小,在空间x[0,50],y[0,22],z[-0.25,0.25]的范围内创建区域。

create_box 4 box#在上述空间内创建一个具有四种原子类型的模拟盒子(原子位置初始化)mass 1 1.0#第一种原子类型质量为1g/molmass 2 1.0#第二种原子类型质量为1g/molmass 3 1.0#第三种原子类型质量为1g/molmass 4 1.0#第四种原子类型质量为1g/mol# atom regionsregion lo-fixed block INF INF INF 1.1 INF INF#定义了一个叫lo-fixed的区域{x[-inf,+inf],y[-inf,1.1],z[-inf,+inf]}region lo-slab block INF INF INF 7 INF INFregion above-lo block INF INF INF 7 INF INF side out#side out表示与所给坐标相反的一边region hi-fixed block INF INF 20.9 INF INF INFregion hi-slab block INF INF 15 INF INF INFregion below-hi block INF INF 15 INF INF INF side outregion lo-asperity sphere 32 7 0 8#定义了一个叫lo-asperity([æˈspɛrɪti]粗糙)的球形区域,球心(32,7,0),球的半径8 region hi-asperity sphere 18 15 0 8region lo-half-sphere intersect 2 lo-asperity above-lo#定义lo-asperity和above-lo两个区域的相交区域为lo-half-sphere区域region hi-half-sphere intersect 2 hi-asperity below-hi# create 2 surfaces with asperities#创建两个粗糙表面create_atoms 1 region lo-slab#在lo-slab区域里创建第1种原子create_atoms 1 region hi-slabcreate_atoms 2 region lo-half-spherecreate_atoms 3 region hi-half-sphere# LJ potentials#LJ势函数pair_style lj/cut 2.5#定义势函数是lj势,截断半径为2.5pair_coeff * * 1.0 1.0 2.5#指定lj势参数ɛσ cutoff# define groups#定义组,便于加载group lo region lo-slab#定义lo-slab区域里的原子组叫lo组group lo type 2#并不能改变原子类型,仅仅是将第2种原子定义入lo组group hi region hi-slabgroup hi type 3group lo-fixed region lo-fixedgroup hi-fixed region hi-fixedgroup boundary union lo-fixed hi-fixed#定义总边界组lo-fixed+hi-fixed= boundarygroup mobile subtract all boundary#定义可动原子组mobile=all-boundaryset group lo-fixed type 4#指定group lo-fixed为第四种原子类型set group hi-fixed type 4#指定group hi-fixed为第四种原子类型# initial velocities#设定初始速度compute new mobile temp/partial 0 1 0#定义温度的计算(可动区域内统计平均), 用户为计算取的名字new(ID),group-ID ,mobile原子组,temp/partiale(style)XYZ的对应位置0或1表示排除或包含这个方向Define a computation that calculates the temperature of a group of atoms, after excluding one or more velocitycomponents. A compute of this style can be used by any command that computes a temperature, e.g.thermo_modify, fix temp/rescale, fix npt, etc.The temperature is calculated by the formula KE = dim/2 N k T, where KE = total kinetic energy of the groupof atoms (sum of 1/2 m v^2), dim = dimensionality of the simulation, N = number of atoms in the group, k =Boltzmann constant, and T = temperature. The calculation of KE excludes the x, y, or z dimensions if xflag,yflag, or zflag = 0. The dim parameter is adjusted to give the correct number of degrees of freedom.velocity mobile create 0.1 482748 temp new#格式:velocity group-ID style args keyword value ...mobile(group ID)按指定的温度(0.1)计算方法,初始化原子的速度。

The create style generates an ensemble of velocities using a random number generator with the specified seed as the specified temperature.create风格使用一个随机数发生器与指定的种子产生一个整体的速度作为指定的温度。

Createargs = temp seedtemp = temperature value (temperature units)0.1seed = random # seed (positive integer)482748tempvalue = temperature compute ID temp newvelocity hi set 1.0 0.0 0.0 sum yes#velocity group-ID style args keyword valuehi原子组x方向的速度为1.0,set(style),setargs = vx vy vzvx,vy,vz = velocity value or NULL (velocity units)any of vx,vy,vz van be a variable (see below)sum(keyword)其值为yes或者no(The sum keyword is used by all styles, except zero. The new velocities will be added to the existing ones ifsum = yes, or will replace them if sum = no).# fixes#fix指令的用途是对一组原子进行定义,可以用于更新原子的位置、速度、控制温度、加常力、施加边界条件等。

相关文档
最新文档