说明一下:我用的是ubuntu12,自动更新到13(去系统自带的“软件中心”安装谷歌拼音输入法,方便后面操作)。下载的lammps为2014年5月份的。
1.更改系统默认的shell
由于ubuntu系统默认的shell是dash,它更小巧、更快。但是听说安装一些脚本时容易出错,因此还是改为bash。
查看系统默认的shell,
ls -l /bin/sh
重新配置dash,
sudo dpkg-reconfigure dash
然后选择[no],终端会自己删除dash,并更改为bash。
2.预安装
sudo apt-get install csh
sudo apt-get install build-essential
lammps要求ubuntu系统的(用于将ubuntu当作debain系统?):
sudo add-apt-repository ppa:gladky-anton/lammps
sudo apt-get update
3.安装编译器
由于电脑CPU是Intel的,所以选择intel的icc和ifort,听说会比其他编译器快很多(主要差别在浮点运算?)。下载地址:
https://software.intel.com/en-us ... oftware-development,获得序列号。我下载安装的是icc2013_sp1.2.144,ifort2013_sp1.2.144版的。
先装(命令集),
sudo apt-get install g++
去解压包的目录下,我的是cd /home/bill/icc
sudo ./install.sh
ifort的安装与此相同。
设置环境变量,使之生效。
gedit .bashrc
打开.bashrc后,在末尾加上
# l_ccompxe_2013_sp1.2.144
# l_fcompxe_2013_sp1.2.144 这两行只是用来注释的
source /opt/intel/bin/compilervars.sh ia32
加这一条可同时使icc,ifort,icpc生效,而不用分别添加。因为compilervars.sh本身就包含了它们的链接。
保存,关闭。
source .bashrc
测试确认一下:输入which icc,再which icpc,which ifort
卸载和安装前面的步骤相同,只需在安装菜单中选“卸载”。
4.MPI和FFT
我是用单机算的,因此没装MPI,它是用来不同平台之间并行计算的。对于单机,还有一个多核并行计算的问题,即openMP。由于intel的编译器已包括了它,所以不用专门去安装。这里也把网上的安装MPI和FFT的贴过来吧:
(1)先去软件中心下载mpich2,这样省事。cd mpich2-1.0.2p1(去解压包的目录)./configure --prefix= /opt/mpich2-gnu(配置,好像这个命令是要求要有gnu的)make(会出来好多选项)再make install(安装)。
(2)去官网下载,http://www.fftw.org/download.html,解压后,cd fftw-2.1.5,./configure --prefix=/opt/mathlib/fftw215-gnu --enable-float,make,make install。
5.编译lammps
(1)MPI库:去官网下载安装包,http://lammps.sandia.gov/download.html#tar,常选“发展包”。
去lammps/src/STUBS/目录下,将Makefile中的g++改为icc,保存。该目录是关于MPI的。
cd /home/bill/lammps/src/STUBS/
make
生成libmpi_stubs.a,是用于非并行的“伪MPI库”,还有 mpi.o是整体编译lammps时用于链接的“中间目标文件”。
(2)额外库:poems是C语言写的,可用icc来编译;meam和reax是用fortran语言写的,可用ifort编译。
cd /home/bill/lammps/lib/poems
make -f Makefile.icc
即开始用icc来编译poems了。会在lammps/lib/poems目录下会生成一个libpoems.a库文件,用于编译整个lammps时调用,还有一个Makefile.lammps,用于引导编译时相关库的调用,另外还有若干*.o的“中间目标文件”。(旧版的lammps是直接去MAKE下的Makefile.*加路径,现在则通过各个“额外包”的Makefile.lammps来改,这样操作更方便、集中)
cd /home/bill/lammps/lib/meam
make -f Makefile.ifort
即开始用ifort编译meam了。会在lammps/lib/meam目录下生成libmeam.a,Makefile.lammps,*.o。将其Makefile.lammps改为
meam_SYSINC =
meam_SYSLIB = -lifcore -lsvml -liompstubs5 -limf
meam_SYSPATH = -L/opt/intel/composerxe/lib/ia32
第二行有四个库,-lifcore调用libifcore.a库,为ifort编译器所需;-lsvml 调用libsvml.a库,是short vector math library;-liompstubs5(旧版的ifort是-lompstub,若装的是新版的ifort用它就会出错)调用libompstub.a库,它与OMP的一个子程序相关,用它(intel编译器已经预装了)就不用另外安装OMP了;-limf调用libimf.a库,是一个数学库。
第三行为安装的intel编译器的库(链接*.o时候用的?)的地址。
reax的安装与meam的步骤相同。
(3)选择和修改Makefile文件:编译之前先去修改负责编译整个lammps的Makefile文件。lammps/src/目录下有个Makefile.sh,用于引导Makefile.*的选择,这些备选的Makefile文件都在lammps/src/MAKE目录下。比如在src目录下输make linux,则编译时将使用Makefile.linux文件来编译整个lammps。我只要做串行计算,因此选择的是Makefile.serial这个文件。在用它进行编译之前,先对它作一点修改。1.编译器部分两处改为icc。2.如果安装了MPI和FFT,则要修改MPI和FFT相应的部分,比如
MPI_INC = -I/opt/mpich/include -DMPICH_SKIP_MPICXX
MPI_PATH = -L/opt/mpich/lib
MPI_LIB = -lmpich -lpthread
FFT_INC = -I/opt/fftw/include -DFFT_FFTW
FFT_PATH = -L/opt/fftw/lib
FFT_LIB = -lfftw3f
3.如果要使用JPEG的功能(in文件中有相应的输出JPEG图片的命令),则要修改相应的部分。
修改完后,保存。
(4)整体编译lammps:该准备的都准备好后(主要是库文件和Makefile文件),就可以开始编译整个lammps了。
回到lammps/src/目录下(其实前一步也还是在这个目录下)
cd /home/bill/lammps/src/
查看各包的选择状态,make package-status
选择和剔除各包,我选的是
make yes-all,然后
make no-gpu
make no-kim
make no-mpiio
make no-voronoi
make no-user-atc
make no-user-awpmd
make no-user-colvars
make no-user-cuda
make no-user-lb
make no-user-qmmm
总共安装了22+8=30个包。其中27个平常的(user-omp需要openMP,单核并行),3个额外包(poems,meam和reax)。
剔除了4+6=10个特殊包。其中gpu需要cuda(有两个cuda需要注意区分),voronoi需要voro++,user-atc需要blas和lapack库,user-awpmd需要openMPI(多核并行)。
最后即可开始编译lammps了,
cd /home/bill/lammps/src/
make clean-all
make serial
编译成功后会在该目录下生成名为lmp_serial.exe(后缀可能看不到)的可执行文件。可复制、剪切、更改名字,复制到其他地方的同样可进行计算。
6.用编译好的lammps来进行计算
将in.*即in文件(可能会带一个data.*文件)与lmp_serial.exe放在同一个目录下。若用的是lammps/examples里的in文件,则需要先把dump命令前的#去掉,还可以按需要把输出的步子比如50改为10等。
先去该目录下,
cd /home/bill/Compute
在该目录下,
./lmp_serial < in.name
即开始计算了,生成数据文件dump.*,包含位置等信息,以及日志log.cite,log.lammps等,记录命令的运行情况。
7.对计算结果进行可视化
(1)安装VMD(visual Molecular Dynamics):预装
sudo apt-get install build-essential csh
sudo apt-get install csh
sudo apt-get install libstdc++5(安装编译器也要用到它?)
下载,http://www.ks.uiuc.edu/Developme ... cgi?PackageName=VMD,解压。
如果要更改安装位置,则先去目录/home/bill/vmd-1.9.1/下,找到并修改configure文件,
install_bin_dir="/home/bill/lammps-18Apr14/src"(startup script一个启动脚本,引导作用)
install_library_dir="/home/bill/vmd-1.9.1/bin/$install_name"(executables一个可执行文件,一个用于实际运行的文件)
如果默认安装路径/usr/local/bin/vmd(启动脚本),则上面不用改。
改好后进行配置,
cd /home/bill/vmd-1.9.1
./configure
(出现几个选项,using configure.options: LINUX OPENGL FLTK TK ACTC CUDA IMD LIBSBALL XINERAMA XINPUT LIBTACHYON VRPN NETCDF TCL PTHREADS SILENT ICC)
./configure LINUX(选LINUX)
配置好后,开始安装,
cd src(或者cd /home/bill/vmd-1.9.1/src)
sudo make install
试试 vmd 命令,直接在终端输“vmd”,结果出现
rlwrap: Command not found.
但仍然可以运行,并出现vmd的两个窗口界面。
去软件中心搜“rlwrap”,下载、安装即可。若运行vmd还是出现那个问题,就去/usr/local/bin下找名为vmd的启动脚本,修改它。
先用命令改其权限。
sudo chmod g+rw /usr/local/bin/vmd
再打开该文档,查找与rlwrap有关的字段,有两处乱码,是需要slash才能正确显示的符号。不想安装slash就要把以下乱码删除。
-b(){}[],&^%#;|\\
为了留个记录,可把原句注释掉(在该行最开头加个符号#),再在下面加上没有乱码的语句。
再用chmod命令把文件的属性改回来(也可以不改),运行vmd试试。
(2)先把前面计算得到的dump.*文件改为vmd所要求的.lammpstrj格式,可直接在dump文件名后加此后缀。
运行vmd:在终端输入vmd,打开软件的主界面和图示界面。
载入分子或原子:点开主界面的“File→New Molecules”,会弹出一个名为“Molecule File Browser”的菜单。先在Determine file type下选择LAMMPS Trajectory,再点Browser,去合适的目录下寻找.lammpstrj格式的文件,最后点Load,即可导入分子或原子。
改变显示方式:在主菜单下Graphics→Representations,会弹出Graphical Representations。Drawing Method下选,VDW,此时原子显示为小球。更改球的半径,Sphere Scale调为0.5或0.4。
将模拟过程保存为动画:主菜单Extensions→Visualization→Movie Maker,会弹出一个名为VMD Movie Generator的菜单。先在Movie Settings下选择Trajectory即输出轨迹(此菜单下还可决定是否删除在制作动画过程中生成的一系列图片),再点Set working directory设置输出动画的地址。如果要输出GIF格式的图片,则Fornat→Animated GIF(ImageMagick);如果要输出mpeg格式的视频,则Format→mpeg-1(ppmtompeg)。最后Make Movie,开始制作。在使用这两个功能之前,需要先安装相应的插件(可通过软件中心):ImageMagick用以输出GIF,NetPBM用以输出mpeg。