# IT4Innovations 2020 # LK easyblock = 'ConfigureMake' name = 'ABINIT' version = '9.2.1' versionsuffix = '-internal' homepage = 'https://www.abinit.org/' description = """ABINIT is a package whose main program allows one to find the total energy, charge density and electronic structure of systems made of electrons and nuclei (molecules and periodic solids) within Density Functional Theory (DFT), using pseudopotentials and a planewave or wavelet basis.""" toolchain = {'name': 'intel', 'version': '2018a'} toolchainopts = {'usempi': True, 'pic': True} source_urls = ['https://www.abinit.org/sites/default/files/packages/'] sources = [SOURCELOWER_TAR_GZ] checksums = ['4aa2deaeec385ff1624669a59768e1a6655f6367f8f109e69944244e000142a0'] # internal build dependencies preconfigopts = "./configure && fallbacks/build-abinit-fallbacks.sh &&" # Ensure MPI with intel wrappers. configopts = '--with-mpi --enable-mpi-io --enable-mpi-inplace ' configopts += ' FC="mpiifort" CC="mpiicc" CXX="mpiicpc" ' # BLAS/Lapack from MKL configopts += '--with-linalg-flavor=mkl ' # FFTW from MKL configopts += '--with-fft-flavor=dfti ' # libxc support configopts += 'with_libxc=%(builddir)s/abinit-9.2.1/fallbacks/install_fb/intel/18.0/libxc/4.3.4 ' # hdf5/netcdf4. configopts += 'with_hdf5=%(builddir)s/abinit-9.2.1/fallbacks/install_fb/intel/18.0/hdf5/1.10.6 ' configopts += 'with_netcdf=%(builddir)s/abinit-9.2.1/fallbacks/install_fb/intel/18.0/netcdf4/4.6.3 ' configopts += 'with_netcdf_fortran=%(builddir)s/abinit-9.2.1/fallbacks/install_fb/intel/18.0/netcdf4_fortran/4.5.2 ' # other dependencies configopts += 'with_xmlf90=%(builddir)s/abinit-9.2.1/fallbacks/install_fb/intel/18.0/xmlf90/1.5.3.1 ' configopts += 'with_libpsml=%(builddir)s/abinit-9.2.1/fallbacks/install_fb/intel/18.0/libpsml/1.1.7 ' # abinit must be run under mpirun with Intel MPI included in intel/2020a pretestopts = "sed -i 's@./abinit testin@mpirun -np 1 ./abinit testin@g' Makefile && " # 'make check' is just executing some basic unit tests. # Also running 'make tests_v1' to have some basic validation runtest = "check && make test_v1" sanity_check_paths = { 'files': ['bin/%s' % x for x in ['abinit', 'aim', 'cut3d', 'conducti', 'mrgddb', 'mrgscr', 'optic']], 'dirs': ['lib/pkgconfig'], } moduleclass = 'chem'