Skip to content

Instantly share code, notes, and snippets.

@vdikan
Created August 5, 2020 15:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vdikan/5a17d02b1d2f52656b4f426661aa3b7b to your computer and use it in GitHub Desktop.
Save vdikan/5a17d02b1d2f52656b4f426661aa3b7b to your computer and use it in GitHub Desktop.
Notes on SIESTA's deps manual installation

Assembled notes on SIESTA’s deps manual installation

Where the ml environment module command is shown the previous dependencies are meant to be made visible, usually through $LD_LIBRARY_PATH variable or similarly. Check README files.

Also, edit --prefix-es accordingly.

LibXC v.3.0.1

version="3.0.1"

mkdir -p $dir && cd $dir
wget -O libxc-$version.tar.gz "https://gitlab.com/libxc/libxc/-/archive/$version/libxc-$version.tar.gz"
tar -xzvf libxc-$version.tar.gz

ml load gcc openblas
cd libxc-$version
autoreconf --install   # <- to bootstrap some autoconf macro
autoconf               # <- generate `configure`
./configure --prefix=/usr/local/apps-gcc-8.2/libxc/$version/ \
            --enable-fortran

make -j2
make check
make install

LibGridXC

version="0.9.1"

mkdir -p $dir && cd $dir
wget "https://gitlab.com/siesta-project/libraries/libgridxc/-/archive/master/libgridxc-master.tar.gz"
tar -xzvf libgridxc-master.tar.gz
mv libgridxc-master libgridxc-$version

ml load gcc libxc/3.0.1
cd libgridxc-$version
./autogen.sh  # <- not described in the docs!
mkdir -p build_serial && cd build_serial
sh ../configure --enable-multiconfig \
                --with-mpi --with-libxc=$LIBXC_ROOT \
                --prefix=/usr/local/apps-gcc-8.2/libgridxc_wlibxc3.0.1/$version/

make -j2
make check
make install

xmlf90

for this i checked gitlab’s siesta-project group for the last tagged release 1.5.4: https://gitlab.com/siesta-project/libraries/xmlf90/-/releases#xmlf90-1.5.4

version="1.5.4"

mkdir -p $dir && cd $dir
wget -o xmlf90-$version.tar.gz "https://launchpad.net/xmlf90/trunk/1.5/+download/xmlf90-$version.tar.gz"
tar -xzvf xmlf90-$version.tar.gz

ml load gcc
cd xmlf90-$version
./configure --prefix=/usr/local/apps-gcc-8.2/xmlf90/$version/

make -j2
make check
make install

libPSML

version="1.1.8"

mkdir -p $dir && cd $dir
wget -O libpsml-$version.tar.gz "https://gitlab.com/siesta-project/libraries/libpsml/-/archive/libpsml-$version/libpsml-libpsml-$version.tar.gz"
tar -xzvf libpsml-$version.tar.gz

ml load gcc xmlf90
cd libpsml-libpsml-$version
autoreconf --install   # <- to bootstrap some autoconf macro
  autoconf               # <- generate `configure`
  ./configure --prefix=/usr/local/apps-gcc-8.2/libpsml/$version/ \
              --with-xmlf90=$XMLF90_ROOT

  make -j2
  make check
  make install

ATOM program (pseudopotentials’ generator)

To check that some of the deps we just built actually do work.

It should be able to generate PSML files too. https://departments.icmab.es/leem/siesta/Pseudopotentials/Code/downloads.html

    mkdir -p $dir && cd $dir
    wget https://departments.icmab.es/leem/siesta/Pseudopotentials/Code/atom-4.2.0.pdf
    wget https://departments.icmab.es/leem/siesta/Pseudopotentials/Code/atom-4.2.7-100.tgz
    tar -xzvf atom-4.2.7-100.tgz

    cd atom-4.2.7-100

    cat > arch.make << EOF
ARCH=linux-gfortran
#
include \$(XMLF90_ROOT)/share/org.siesta-project/xmlf90.mk
include \$(GRIDXC_ROOT)/share/org.siesta-project/gridxc_dp.mk
#
FFLAGS= -O2
FFLAGS_DEBUG= -O0 -g -fbacktrace
LDFLAGS=
RANLIB=echo
#
.F.o:
	\$(FC) -c \$(FFLAGS) \$(INCFLAGS)  \$(FPPFLAGS) \$<
.f.o:
	\$(FC) -c \$(FFLAGS) \$(INCFLAGS)   \$<
.F90.o:
	\$(FC) -c \$(FFLAGS) \$(INCFLAGS)  \$(FPPFLAGS) \$<
.f90.o:
	\$(FC) -c \$(FFLAGS) \$(INCFLAGS)   \$<
#
EOF

   make

Notes:

  • I had to edit the default paths to .mk-files (and fix some permissions)
  • In this setup libxc is linked dynamically. To exec atm I need ml load libxc first.
  • Take care when building with ~libxc v.>4.0 Interfaces change, and some software does not reflect it in time (I had troubles with ONCVPSP pseudo generator, for example). I also had to pass newer libxc the --enable-shared configuration directive, in order to allow libgridxc to link. Saving you time to fing explanation here: https://stackoverflow.com/questions/13812185/how-to-recompile-with-fpic Alternatively: is there any sense in making libxc a static library?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment