SIESTA-5.0.1 Released version
This version of siesta has two important features.
(1) psml pseudopotential --> Psuedo-Dojo, ONCVPSP-psml pseudopotential generator.
(2) LibXC --> Various LDA and GGA, but not hybrid-GGA(LDA) and metaGGA (not supported by siesta).
** psml2psf --> Convert PSML pseudopot to psf format
source files at Pseudo/converters/psml2psf, excutable at <Install dir>/bin/
변환된 PSF는 KBprojector와 local potential이 달라서 PSML과 계산 결과가 다름. PSML을 사용할 때 siesta option중에서 PSML.KBprojector와 PSML.Vlocal을 끄면 결과가 같아짐
Documents: https://docs.siesta-project.org/projects/siesta/en/latest/how-to/installation/build-manually.html
SIESTA Code: https://siesta-project.org/siesta/CodeAccess
Other Codes: https://gitlab.com/siesta-project/libraries
(e.g.) libpsml: https://gitlab.com/siesta-project/libraries/libpsml
Computer system (Bomb)
Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz / Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz / Intel(R) Xeon(R) Gold 6230R CPU @ 2.10GHz
OS: CentOS 7
Compiler and lib: Intel Parallel Studio XE2019 update 3 (mpiifort, mpiicc, MKL)
MPI: IntelMPI
(1) Copy source files of external modules to <siesta home>/External/<module>
Before install siesta, download and copy external modules in ${siesta_home}/External/<module>. For example,
tar -zxvf xmlf90-master.tar.gz
cp -r xmlf90-master/* ${siesta_home}/External/xmlf90/
==== List of external modules ===
xmlf90, libfdf, libgridxc, libpsml, s-dftd3 and flook will be automatically downloaded and compiled during making siesta. However, when your computer is in secure network, you may download them by yourself. CMAKE will compile them automatically, anyway.
Required ( Available from https://gitlab.com/siesta-project/libraries )
xmlf90-master.tar.gz (ver. 1.6.3) ==> Unzip and copy every source file to External/xmlf90
libfdf-0.5.1.tar.gz ==> External/libfdf
libgridxc-2.0.0.tar.gz ==> External/libgridxc
libpsml-2.0.1.tar.gz ==> External/libpsml
Optional
s-dftd3-1.0.0.tar.xz ==> Copy all to External/DFTD3/s-dftd3, and use -DSIESTA_WITH_DFTD3=ON
flook-0.8.4.tar.gz ==> Copy to External/Lua-Engine/flook
libxc-6.2.2.tar.gz ==> Compile it separately. (Optional)
Optional (Need to compile manually)
netcdf-c-4.9.2.tar.gz
netcdf-fortran-4.6.1.tar.gz
zlib-1.3.tar.gz
hdf5-1.14.3.tar.bz2
wannier90 : You may check the file Config/cmake/search_for_wannier90.cmake
PEXI (pexi-2.0 or higher) : Check Config/cmake/Modules/FindCustomPEXSI.cmake or Config/cmake/search_for_native_PEXSI_provider.cmake
ELPA (elpa-2020.05.001.tar.gz) : Check the version from Config/cmake/Modules/FindCustomElpa.cmake
(2) (Optional) Compiling libxc-6.2.2
tar -zxvf libxc-6.2.2.tar.gz
cd libxc-6.2.2
./configure FC=mpiifort CC="mpiicc -std=c99" --prefix=/home/me/SWs/libxc-6.2.2/mpi
make -j4
make check
make install
** Why "-std=c99" option ?
You may get introuble with an error like below, and CC="icc -std=c99" option solves the problem.
(Or, CC=icc CFLAG="-std=c99" )
util.c(921):error: expected an expression
for(intj=0; j<=k-jj; j++) {
(3) Install siesta-rel-5.0
(A) Minimal setting (with Intel compilers, mkl, and intelmpi)
Type commands as below.
MKLROOT=<Route to MKL>/compilers_and_libraries_2019.3.199/linux/mkl \
cmake -S. -B_build_min -DCMAKE_INSTALL_PREFIX=/home/me/siesta-5.0.1/mpi_min \
-DMPI_Fortran_COMPILER=mpiifort -DCMAKE_Fortran_COMPILER=ifort -DCMAKE_C_COMPILER=icc \
-DSCALAPACK_LIBRARY="-L${MKLROOT}/lib/intel64_lin -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64" \
-DLAPACK_LIBRARY_DIR=${MKLROOT}/lib/intel64_lin \
-DBLAS_LIBRARY_DIR=${MKLROOT}/lib/intel64_lin
cmake --build _build_min -j4
cmake --install _build_min
### Testsiesta
cd _build_min
ctest | tee ctest.log
* Excutables (siesta, transiesta and many utilities) will be in /home/me/SWs/siesta-5.0.1/mpi_min/bin.
** Make bash script and run it instead of typing looooong command lines for configuration.
So, Copy and paste all lines "MKLROOT= ..." to, for example, config_cmake.sh, then runt it.
(B) Typical setting
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/kistsckim/SWs/modules/_lib
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/kistsckim/SWs/modules/elpa/v2021.11.001_intel/lib/pkgconfig
#echo $PKG_CONFIG_PATH
MKLROOT="<Route to MKL>/compilers_and_libraries_2019.3.199/linux/mkl" \
cmake -S. -B_build_std -DCMAKE_INSTALL_PREFIX=/home/me/siesta-5.0.1/mpi_std \
-DSCALAPACK_LIBRARY="-L${MKLROOT}/lib/intel64_lin -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64" \
-DLAPACK_LIBRARY_DIR=${MKLROOT}/lib/intel64_lin -DBLAS_LIBRARY_DIR=${MKLROOT}/lib/intel64_lin \
-DMPI_Fortran_COMPILER=mpiifort -DCMAKE_Fortran_COMPILER=ifort -DCMAKE_C_COMPILER=icc \
-DSIESTA_WITH_FFTW=ON -DSIESTA_WITH_DFTD3=ON -DSIESTA_WITH_FLOOK=ON \
-DSIESTA_WITH_LIBXC=ON -DSIESTA_WITH_WANNIER90=ON -DSIESTA_WITH_MRRR=ON \
-DSIESTA_WITH_ELPA=ON \
-DELPA_LIBDIR="/home/me/modules/elpa/v2021.11.001_intel/lib" \
-DELPA_INCLUDEDIR="/home/me/modules/elpa/v2021.11.001_intel/include"\
-DSIESTA_WITH_PEXSI=ON -DPEXSI_ROOT=/home/me/modules/pexsi/v2.0.0_intel\
-DPEXSI_LIBRARIES=/home/me/modules/pexsi/v2.0.0_intel/lib/libpexsi_intel.a \
-DPEXSI_INCLUDE_DIR=/home/me/modules/pexsi/v2.0.0_intel/include\
-DPARMETIS_LIBRARIES=/home/me/modules/parmetis/v4.0.3_intel/lib/libparmetis.a \
-DMETIS_LIBRARIES=/home/me/modules/parmetis/v4.0.3_intel/lib/libmetis.a \
-DSUPERLU_DIST_LIBRARIES=/home/me/modules/superlu_dist/v7.2.0_intel/lib64/libsuperlu_dist.a \
-DCMAKE_PREFIX_PATH="/home/me/modules/libxc/v6.2.2_intel_mpi; /home/me/modules/elpa/v2021.11.001_intel"
** -DLIBXC_ROOT=/home/me/SWs/libxc-6.2.2/mpi로 시도는 해봤지만 안되서 -DCMAKE_PREFIX_PATH를 사용함.
WITH_FFTW=OFF, WITH_LIBXC=OFF, WITH_DFTD3=OFF 도 가능. 이 세 가지는 선택사항임.
** You may use "export LD_LIB..." at first to configure, and comment off them at second try. (Sometimes, it works, but don't know why)
(c) Serial mode configuration (Intel compilers and MKL)
MKLROOT=<....>/compilers_and_libraries_2019.3.199/linux/mkl\
cmake -S. -B_build_serial -DCMAKE_INSTALL_PREFIX=/home/me/siesta-5.0.1/serial \
-DLAPACK_LIBRARY_DIR=${MKLROOT}/lib/intel64_lin -DBLAS_LIBRARY_DIR=${MKLROOT}/lib/intel64_lin \
-DWITH_FFTW=ON -DFFTW_LIBRARY=${MKLROOT}/interfaces/fftw3xf/libfftw3xf_intel.a \
-DCMAKE_Fortran_COMPILER=ifort -DCMAKE_C_COMPILER=icc \
** 설정할 수 있는 변수명은 "cmake " 명령어 이후 출력되는 내용을 참조할 것.