简介

这是一个免费开源的大规模并行的电子激发态属性计算包,它基于采用ab initio GW和GW加Bethe-Salpeter方程方法的多体扰动理论。

编译方法可以参考官网:http://manual.berkeleygw.org/2.1/compilation/

安装环境

  • 编译器;如intel compiler
  • MPI编译器:如impi
  • fftw库:如fftw3
  • hdf5库:可选

安装依赖

安装intel compiler 和 impi 的过程不再赘述。

安装fftw库

wget ftp://ftp.fftw.org/pub/fftw/fftw-3.3.8.tar.gz
tar zxvf fftw-3.3.8.tar.gz
cd fftw-3.3.8
# 编译双精度版本
./configure CC=icc FC=ifort CXX=icpc --prefix=$HOME/software/fftw/3.3.8
make 
make install

说明:

  1. CC/FC/CXX 用来指定编译器的名字,如果不写,默认是GNU的编译器。
  2. --prefix 用来指定安装目录

安装hdf5

# 下载页面
# https://www.hdfgroup.org/downloads/hdf5/source-code/
# 下载
wget https://s3.amazonaws.com/hdf-wordpress-1/wp-content/uploads/manual/HDF5/HDF5_1_10_5/source/hdf5-1.10.5.tar.gz

tar zxvf hdf5-1.10.5.tar.gz
cd hdf5-1.10.5 
./configure CC=mpiicc FC=mpiifort CXX=mpiicpc \
--enable-fortran --enable-parallel --enable-shared \
--prefix=$HOME/software/hdf5/1.10.4 
make
make install

说明:

  1. --enable-fortran 开启fortran支持,BGW需要
  2. --enable-parallel 开启并行支持,BGW需要

安装应用

# 下载地址
# https://berkeleygw.org/download/
wget https://berkeley.app.box.com/s/ze3azi5vlyw7hpwvl9i5f82kaiid6g0x
# 
tar zxvf BerkeleyGW-2.1.tar.gz
cd BerkeleyGW-2.1

需要一个名为arch.mk的配置文件,下面为我写好的配置文件,通常需要用户依据自身需求进行细微修改。

# arch.mk
COMPFLAG  = -DINTEL
PARAFLAG  = -DMPI
MATHFLAG  = -DUSESCALAPACK -DHDF5 -DUNPACKED -DUSEFFTW3
FCPP    = cpp -C
F90free = mpiifort -free
#LINK    = mpiifort -i-static -openmp
LINK    = mpiifort -qopenmp
FOPTS   = -O3 -no-prec-div
FNOOPTS = -O2 -no-prec-div
MOD_OPT = -module
INCFLAG = -I
C_PARAFLAG = -DPARA
CC_COMP = mpiicpc
C_COMP  = mpiicc
C_LINK  = mpiicpc
C_OPTS  = -O3
C_DEBUGFLAG =
REMOVE  = /bin/rm -f
FFTWPATH     = $(HOME)/software/fftw/3.3.8  # fftw path
FFTWLIB      = $(FFTWPATH)/lib/libfftw3.a
FFTWINCLUDE  = $(FFTWPATH)/include
MKLPATH      = $(MKLROOT)/lib/intel64
LAPACKLIB    = -Wl,--start-group $(MKLPATH)/libmkl_intel_lp64.a $(MKLPATH)/libmkl_sequential.a \
               $(MKLPATH)/libmkl_core.a $(MKLPATH)/libmkl_blacs_intelmpi_lp64.a \
               -Wl,--end-group -lpthread
SCALAPACKLIB = $(MKLPATH)/libmkl_scalapack_lp64.a
HDF5DIR      = $(HOME)/software/hdf5/1.10.4 # hdf5 path
HDF5LIB      = $(HDF5DIR)/lib/libhdf5hl_fortran.a $(HDF5DIR)/lib/libhdf5_hl.a \
               $(HDF5DIR)/lib/libhdf5_fortran.a $(HDF5DIR)/lib/libhdf5.a -lz
HDF5INCLUDE  = $(HDF5DIR)/include
TESTSCRIPT = sbatch hbar.scr

说明:

  1. 该文件详细描述了各个编译参数和库的路径。
  2. 请依据自身的需要进行修改。
  3. MATHFLAG 参数用来添加FFTW3HDF5的支持。

然后进行编译即可:

make all-flavors
make install PREFIX=$HOME/software/bgw/2.1-real

编译cplx版本:

make clean-flavored
make cplx
make install PREFIX=$HOME/software/bgw/2.1-cplx

运行环境

export BGW_HOME=$HOME/software/bgw/2.1-real   # real or cplx , 用"#" 注释掉其中一行
export BGW_HOME=$HOME/software/bgw/2.1-cplx
export PATH=$BGW_HOME/bin:$PATH
export LD_LIBRARY_PATH=$BGW_HOME/lib:$LD_LIBRARY_PATH