Skip to content

[ABINIT] [package list]

ABINIT/9.6.2-cpeGNU-21.08 (ABINIT-9.6.2-cpeGNU-21.08.eb)

This software is archived in the LUMI-EasyBuild-contrib GitHub repository as easybuild/easyconfigs/__archive__/a/ABINIT/ABINIT-9.6.2-cpeGNU-21.08.eb. The corresponding module would be ABINIT/9.6.2-cpeGNU-21.08.

# Based on work of  Matthias Kraushaar (CSCS)
# Adapted for LUMI by Orian Louant

local_libxc_version = '5.1.7'
local_Wannier90_version = '3.1.0'

easyblock = 'ConfigureMake'

name = 'ABINIT'
version = '9.6.2'

homepage = 'https://www.abinit.org/'

whatis = [
    "Description: ABINIT is a software suite to calculate the optical, "
    "mechanical, vibrational, and other observable properties of materials"
]

description = """
ABINIT is a software suite to calculate the optical, mechanical, vibrational,
and other observable properties of materials. Starting from the quantum
equations of density functional theory, you can build up to advanced
applications with perturbation theories based on DFT, and many-body Green's
functions (GW and DMFT).

ABINIT can calculate molecules, nanostructures and solids with any chemical
composition, and comes with several complete and robust tables of atomic
potentials.

This module provides an pure MPI executable. It includes support for netCDF,
HDF5, LibXC functionals and Wannier90.
"""

docurls = [
    'Documentation: https://docs.abinit.org/',
    'Tutorials:  https://docs.abinit.org/tutorial/'
]

toolchain = {'name': 'cpeGNU', 'version': '21.08'}
toolchainopts = {'usempi': True, 'openmp': True, 'pic': True, 'gfortran9-compat': True}

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

builddependencies = [
    ('buildtools', '%(toolchain_version)s', '', True),
    ('cray-python', EXTERNAL_MODULE),
]

dependencies = [
    ('libxc',                    local_libxc_version),
    ('Wannier90',                local_Wannier90_version),
    ('cray-fftw',                EXTERNAL_MODULE),
    ('cray-hdf5-parallel',       EXTERNAL_MODULE),
    ('cray-netcdf-hdf5parallel', EXTERNAL_MODULE),
]

configopts  = 'FCFLAGS="-ffree-line-length-none $FCFLAGS" '
configopts += 'FFLAGS=" $FFLAGS" '

configopts += ' --enable-openmp="yes" '

# Ensure MPI
configopts += ' --with-mpi="yes" '
configopts += ' --enable-mpi-io="yes" '
configopts += ' --enable-mpi-inplace="yes" '
configopts += ' FC="ftn" CC="cc" CXX="CC" F90="ftn" '

# FFTW
configopts += ' --with-fft-flavor=fftw3 --with-fftw3=$FFTW_DIR '

# libxc support
configopts += ' --with-libxc=${EBROOTLIBXC} '

# hdf5/netcdf4 support
configopts += ' --with-netcdf="${CRAY_NETCDF_HDF5PARALLEL_PREFIX}" '
configopts += ' --with-netcdf-fortran="${CRAY_NETCDF_HDF5PARALLEL_PREFIX}" '
configopts += ' --with-hdf5="${CRAY_HDF5_PARALLEL_PREFIX}" '

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

[ABINIT] [package list]