Google
      
发新话题
打印

[资源共享] ubuntu上编译LAMMPS

ubuntu上编译LAMMPS

需要在系统上预先装有mpich和fftw的开发库,而且fftw还要求不是最新的3.x版,而是2.x。
复制内容到剪贴板
代码:
apt-get install fftw2 libmpich1.0-dev gfortran
下载并解压缩源文件包以后,进入解压后路径下的src/目录,只要简单的“make debian”就可以得到可执行文件(lmp_debian)

得到lmp_debian之后,就可以运行那些例子了。但是你并没有得到lammps所支持的所有功能。lammps支持package,有系统自带的也有用户自行开发的。默认只编译"kspace", "manybody", 和"molecule"三个系统自带的包。其他还有一些“ asphere class2 colloid dipole dpd granular meam opt poems xtc”包没有编译进可执行程序,也就是说你不能使用那些额外功能。 如果需要全部编译。这可以通过先“make yes-all”然后“make clean”,"make debian"来完成。

稍微有一点麻烦的是,有两个包“meam”和“poems”是第三方开发的独立程序,源代码并没有在src目录下。你需要到../lib/中才可以看见它们的目录,需要分别编译。

先说poems,应该用用于刚体模拟的,进入lib/poems/后,直接“make Makefile.g++”
再说编译meam,这个meam是fortran写的,前面由于已经安装了gfortran,作者也给了Makefile.gfortran,所以只要“make Makefile.gfortran”即可得到libmeam.a了

到这里,我们准备好了所有的lammps附属包,可以重新编译最终的可执行文件了。为了能让编译器找到需要库和头文件,我们还需手工修改一下makefile。我这里就是修改src/MAKE/Makefile.debian。要改这三行:
CCFLAGS = -g -O -I/usr/lib/mpich/include/ -DFFT_FFTW -DLAMMPS_GZIP -I/lammps全路径/lib/poems/ -I/lammps全路径/lib/meam/
LINKFLAGS = -g -O -L/lammps全路径/lib/poems/ -L/lammps路径/lib/meam/
USRLIB = -lfftw -lmpich -lpoems -lmeam -lgfortran -lgfortranbegin
注意加粗的地方是要添加的。大致的意思就是告诉编译器哪里有额外的库文件,头文件。

欢迎大家拍砖。

[ 本帖最后由 redream 于 2008-6-22 21:22 编辑 ]
本帖最近评分记录
  • fatcharm 金币 +10 谢谢分享,其实跟本版已有内容还有所重复 2008-6-17 23:31

TOP

正要在ubuntu上编译,非常感谢

TOP

是啊,都是参照你们写的编译成功的,这个帖子本可有可无,可我还是写出来了,只为添砖加瓦,仅此而已!

TOP

呵呵,无论大小贡献,都欢迎
【生活就要耐住寂寞,面对现实微笑,越过障碍注视未来】
============================================
            我为人人,人人为我 多ONE朋友,多N智慧
============================================

TOP

看了楼主的帖子,我也说一点我编译的一些情况。
楼主的机器里可能只装了gnu的编译器,而我的机器里同时装了ifort,pgi和gnu的,
如果就按照楼主的方法是没有办法编译成功的,
总是找不到lpoems和lmeam,
因为lib中默认的编译工具和我编译lammps所采用的编译工具不一定一致,
所以找不到接口,
需要做一些修改。
以采用g++编译并行环境为例,
我的做法是采用和楼主相同的方法执行一次,
然后进入lammps/lib/poems中,
删除所有.o,.a,.mod文件,
然后cp Makefile.g++ Makefile
覆盖掉原来的Makefile,
在这个目录里执行一遍make,
生成libpoems.a
然后ln -s /opt/lammps/lib/poems/libpoems.a /usr/bin/libpoems.a
同法处理meam的lib,
然后再回到/opt/lammps/src中执行make g++就可以了。
本帖最近评分记录
  • redream 金币 +10 2008-6-21 11:30
  • redream 讨论指数 +2 2008-6-21 11:30
风雨三川吟游客,一剑西来巴子蛮

TOP

我认为做MD模拟,如果不需要安装的包就不要添加进去,只选择你需要的模块,这样编译出来的程序的运行效率要高些。一孔之见。

TOP

我按照楼上的两种方法试了一下,结果是都没有安上。

TOP

楼上用的编译器是?
操作系统是?
MPI是?
遇到的错误是什么?
就计算软件的安装问题我曾在Everest社区问过(我用的是Everest Linux),
他们认为有些软件无法编译可能是tool chain的问题,
有些版本的Linux和软件开发者使用的Linux版本的tool chain定义差别较大,
那么就无法成功安装了。
还有就是编译器和系统的配合问题,
兼容性最好的可能是Ifc9.1和icc9.1,
只有一些软件的部分功能不正常,
其它的编译器(包括ifc10等)基本上都发生过某些软件(比如GULP,VASP)根本无法编译或编译后计算结果完全不正确的现象。
还有就是MPI,
如果使用OPENMPI,
Lammps是无法安装上的,
也不能采用HP-MPI,
但是采用MPICH1.23和MPICH2是正常的。
另外注意,
你所使用的编译器和编译安装MPI时的应当是一致的。

[ 本帖最后由 realasking 于 2008-7-30 19:02 编辑 ]
本帖最近评分记录
  • fatcharm 讨论指数 +2 Thanks for suggestion 2008-8-1 00:25
风雨三川吟游客,一剑西来巴子蛮

TOP

回复 6楼 sysboy 的帖子

不一定是这样的,呵呵。
主要还是看程序结构的设计和算法。
如果程序是面向对象的方法设计的,
而且各种功能分解得比较彻底,
那么模拟中对性能的影响也不是很大的。
风雨三川吟游客,一剑西来巴子蛮

TOP

我好像没有用这个方法也安装上了lammps,我用的是ubutun8.04,vm虚拟机装的,make成功了,但还不会运行in.文件

TOP

赞助商链接

论坛之星

发新话题