GULP(General Utility Lattice Program)基于经典的势能模型,能够以此计算材料的一系列物性,包括晶格优化,原子位置优化,二阶弹性系数,经典势能模型参数拟合,声子计算,缺陷计算等。计算准确程度依赖于势能模型和参数的准确程度,其结果可以作为分子动力学计算的补充。
GULP的官网地址:GULP - Home
下载需要注册提供邮箱,然后根据链接下载,这里安装以版本5.2为例。
虽然经典势能模型的计算量一般并不大,很多计算只需要安装串行版本即可,串行安装非常简单,只要有gfortran即可。这里主要介绍并行版本的安装,并行版本的安装方法分为intel和非intel版本的安装:
1.intel并行版本安装(即借助intel内的mpirun和scalapack等包)
安装可参考其gulp包内的README的提示,即进入gulp包内的Src目录,然后用命令:
./mkgulp -m -c intel -j 安装用核数
上述命令使用intel的fortran编译器以及intel内部的mpirun命令!,本人也试过openmpi,包括用intel编译器编译的版本或者gnu版本编译器编译的版本,安装并行版皆有问题,所以直接采用intel自己的mpirun以及mkl,运行上述命令前首先需要配置intel编译器的环境:
source intel编译器总路径/compilers_and_libraries**/linux/bin/compilervars.sh intel64
上述命令会将当前mpirun改为intel的,可以在shell内用which mpirun 验证
然后:
source intel编译器总路径/compilers_and_libraries**/mkl/bin/mklvars.sh intel64 ilp64
以上为intel的mkl的环境变量
运行后,在gulp包内Src目录类执行./mkgulp -m -c intel -j 安装用核数
即可安装完成。当然运行并行版的gulp,也需要用intel内的mpirun,即先执行上述source,再运行。
2gnu并行版安装,需要使用openmpi:
方式1(不推荐,测试发现可能是scalapack版本问题,编译gulp最后报错出现未定义等问题,可能需要尝试不同版本):总思路为自己安装openmpi,blas, lapack以及scalapack,然后需要修改gulp的Src文件内的mkgulp文件,找到其中并行模块的:
'SLIBS=-L/opt/local/lib -lscalapack' 行,这里要补充自己的scalapack包的位置,最后用mkgulp -m实现gulp的并行版本安装。具体过程为:
1.openmpi的安装:
openmpi的安装比较简单,下载包后,./configure --prefix=“安装路径” 然后make 最后make intall
2.BLAS, LAPACK和SCALAPACK的安装
相应包的链接直接bing搜索即可,如SCALAPCK包: http://www.netlib.org/scalapack/
blas,cblas等包都在LAPACK包中,只需要下载LAPACK包,安装推荐用cmake,非常方便,只需在包总路径下新建一个自己的安装目录,进入后cmake .. (..意思为上级目录中已有的cmake文件),完成后直接make,然后sudo make install,默认lib包将放在/usr/local/lib内为libblas.a
接着安装scalapack,这个必须在lapack安装后再安装,同样用cmake,过程一致。
最后在gulp的Src内mkgulp中'SLIBS=-L/opt/local/lib -lscalapack' 行内地址修改为
'SLIBS=-L/usr/local/lib -lscalapack -llapack -lblas'
然后mkgulp -m编译
方式2(推荐,成功编译,此处参考下述链接介绍方法,但有地方修改ubuntu下简便安装并行版GULP (General Utility Lattice Program) - 哔哩哔哩)
按照上述链接中方法:利用ubuntu系统的apt-get安装scalapack等lib,apt-get安装后lib包默认的位置在/usr/lib/x86_64-linux-gnu/内
1. 配置安装环境与数据库:
sudo apt-get install make
sudo apt-get install gfortran
sudo apt-get install libopenmpi-dev
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev
sudo apt-get install libscalapack-mpi-dev
sudo apt-get install build-essential libopenmpi-dev libblas-dev liblapack-dev libscalapack-mpi-dev libblacs-mpi-dev
2. 上述执行后,发现ubuntu18版本,在/usr/lib/x86_64-linux-gnu/内libscalapack的文件名为:
libscalapack-openmpi.so, 所以sudo cp ./libscalapack-openmpi.so ./libscalapack.so
即复制并重命名为libscalapack.so (这里不修改名称,后面会有错误)
接着修改gulp的Src内mkgulp文件中'SLIBS=-L/opt/local/lib -lscalapack' 行为:
SLIBS='/usr/lib/x86_64-linux-gnu/libscalapack.so /usr/lib/x86_64-linux-gnu/liblapack.so /usr/lib/x86_64-linux-gnu/libblas.so'
然后./mkgulp -m 即可编译成功。