# IT4Innovations
# LK 2021

easyblock = 'ConfigureMake'

name = 'ABINIT'
version = '9.4.1'

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."""

# AMD/intel cpu
toolchain = {'name': 'intel', 'version': '2020b'}
import os
if os.environ.get("CLUSTERNAME") in ["KAROLINA"]:
   toolchainopts = {'usempi': True, 'optarch': 'march=core-avx2', 'pic': True}
else:
   toolchainopts = {'usempi': True, 'pic': True}

source_urls = ['https://www.abinit.org/sites/default/files/packages/']
sources = [SOURCELOWER_TAR_GZ]
checksums = ['ec74133ef9d247cb6ad44c205675694919cf36d7f1682a9b85cae8bdecdc22a8']

builddependencies = [
    ('Python', '3.8.6'),
]
dependencies = [
    ('libxc', '4.3.4'),
    ('netCDF', '4.7.4'),
    ('netCDF-Fortran', '4.5.3'),
    ('HDF5', '1.10.7'),
    ('Wannier90', '3.1.0'),
]

# Ensure MPI with intel wrappers.
configopts = '--with-mpi="yes" --enable-openmp="no" '
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=${EBROOTLIBXC} '

# hdf5/netcdf4 support
configopts += '--with-netcdf="${EBROOTNETCDF}" '
configopts += '--with-netcdf-fortran="${EBROOTNETCDFMINFORTRAN}" '
configopts += '--with-hdf5="${EBROOTHDF5}" '

# Wannier90
configopts += '--with-wannier90="${EBROOTWANNIER90}" '
preconfigopts = 'export WANNIER90_LIBS="-L$EBROOTWANNIER90/lib -lwannier" && '

# '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'
