From 2d0837939b8cb20abcbc02a7278bf4206b6effdc Mon Sep 17 00:00:00 2001
From: Lukas Krupcik <lukas.krupcik@vsb.cz>
Date: Fri, 6 Sep 2024 14:46:47 +0200
Subject: [PATCH] 	new file:   h/HDF5/HDF5-1.14.3-iimpi-2024a.eb 	new
 file:   n/netCDF-Fortran/netCDF-Fortran-4.6.1-iimpi-2024a.eb 	new file:  
 n/netCDF/netCDF-4.9.2-iimpi-2024a.eb 	new file:  
 s/Szip/Szip-2.1.1-GCCcore-13.3.0.eb 	new file:  
 v/VASP/VASP-6.4.3-intel-2023b.eb 	new file:  
 w/Wannier90/Wannier90-3.1.0-intel-2024a-serial.eb

---
 h/HDF5/HDF5-1.14.3-iimpi-2024a.eb             | 36 ++++++++++
 .../netCDF-Fortran-4.6.1-iimpi-2024a.eb       | 35 ++++++++++
 n/netCDF/netCDF-4.9.2-iimpi-2024a.eb          | 70 +++++++++++++++++++
 s/Szip/Szip-2.1.1-GCCcore-13.3.0.eb           | 32 +++++++++
 v/VASP/VASP-6.4.3-intel-2023b.eb              | 61 ++++++++++++++++
 .../Wannier90-3.1.0-intel-2024a-serial.eb     | 39 +++++++++++
 6 files changed, 273 insertions(+)
 create mode 100644 h/HDF5/HDF5-1.14.3-iimpi-2024a.eb
 create mode 100644 n/netCDF-Fortran/netCDF-Fortran-4.6.1-iimpi-2024a.eb
 create mode 100644 n/netCDF/netCDF-4.9.2-iimpi-2024a.eb
 create mode 100644 s/Szip/Szip-2.1.1-GCCcore-13.3.0.eb
 create mode 100644 v/VASP/VASP-6.4.3-intel-2023b.eb
 create mode 100644 w/Wannier90/Wannier90-3.1.0-intel-2024a-serial.eb

diff --git a/h/HDF5/HDF5-1.14.3-iimpi-2024a.eb b/h/HDF5/HDF5-1.14.3-iimpi-2024a.eb
new file mode 100644
index 00000000..30bc8da5
--- /dev/null
+++ b/h/HDF5/HDF5-1.14.3-iimpi-2024a.eb
@@ -0,0 +1,36 @@
+# IT4Innovations
+# LK 2024
+
+name = 'HDF5'
+# Note: Odd minor releases are only RCs and should not be used.
+version = '1.14.3'
+
+homepage = 'https://portal.hdfgroup.org/display/support'
+description = """HDF5 is a data model, library, and file format for storing and managing data.
+ It supports an unlimited variety of datatypes, and is designed for flexible
+ and efficient I/O and for high volume and complex data."""
+
+toolchain = {'name': 'iimpi', 'version': '2024a'}
+
+import os
+# core-avx2 is required due to a but in fortran compiler
+if os.environ.get("CLUSTERNAME") in ["KAROLINA"]:
+    toolchainopts = {'pic': True, 'usempi': True, 'optarch': 'march=core-avx2'}
+else:
+    toolchainopts = {'pic': True, 'usempi': True}
+
+
+source_urls = ['https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-%(version_major_minor)s/hdf5-%(version)s/src']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['09cdb287aa7a89148c1638dd20891fdbae08102cf433ef128fd345338aa237c7']
+
+# replace src include path with installation dir for $H5BLD_CPPFLAGS
+_regex = 's, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g'
+postinstallcmds = ['sed -i -r "%s" %%(installdir)s/bin/%s' % (_regex, x) for x in ['h5c++', 'h5pcc']]
+
+dependencies = [
+    ('zlib', '1.3.1'),
+    ('Szip', '2.1.1'),
+]
+
+moduleclass = 'data'
diff --git a/n/netCDF-Fortran/netCDF-Fortran-4.6.1-iimpi-2024a.eb b/n/netCDF-Fortran/netCDF-Fortran-4.6.1-iimpi-2024a.eb
new file mode 100644
index 00000000..ffda2306
--- /dev/null
+++ b/n/netCDF-Fortran/netCDF-Fortran-4.6.1-iimpi-2024a.eb
@@ -0,0 +1,35 @@
+# IT4Innovations
+# LK 2024
+
+name = 'netCDF-Fortran'
+version = '4.6.1'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'iimpi', 'version': '2024a'}
+import os
+if os.environ.get("CLUSTERNAME") in ["KAROLINA"]:
+   toolchainopts = {'usempi': True, 'opt': True, 'optarch': 'march=core-avx2'}
+else:
+   toolchainopts = {'usempi': True, 'opt': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-fortran/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['40b534e0c81b853081c67ccde095367bd8a5eead2ee883431331674e7aa9509f']
+
+builddependencies = [
+    ('M4', '1.4.19'),
+]
+
+dependencies = [
+    ('netCDF', '4.9.2'),
+    ('bzip2', '1.0.8'),
+]
+
+# (too) parallel build fails, but single-core build is fairly quick anyway (~1min)
+parallel = 1
+
+moduleclass = 'data'
diff --git a/n/netCDF/netCDF-4.9.2-iimpi-2024a.eb b/n/netCDF/netCDF-4.9.2-iimpi-2024a.eb
new file mode 100644
index 00000000..f33be649
--- /dev/null
+++ b/n/netCDF/netCDF-4.9.2-iimpi-2024a.eb
@@ -0,0 +1,70 @@
+# IT4Innovations
+# LK 2024
+# rucne kompilovat, pak jen --module-only
+# po cmake pridat -lmpi do netcdf.pc nc-config libnetcdf.settings
+
+name = 'netCDF'
+version = '4.9.2'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'iimpi', 'version': '2024a'}
+import os
+if os.environ.get("CLUSTERNAME") in ["KAROLINA"]:
+   toolchainopts = {'usempi': True, 'opt': True, 'optarch': 'march=core-avx2'}
+else:
+   toolchainopts = {'usempi': True, 'opt': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-c/archive/']
+sources = ['v%(version)s.tar.gz']
+patches = [
+    'netCDF-4.9.0_skip-nasa-test.patch',
+]
+checksums = [
+    {'v4.9.2.tar.gz': 'bc104d101278c68b303359b3dc4192f81592ae8640f1aee486921138f7f88cb7'},
+    '19d99e03c048b037dc01f03f5b8ddc910ebaceb076d0f050540d348f26dfcd2a',  # netCDF-4.9.0_skip-nasa-test.patch
+]
+
+builddependencies = [
+    ('Autotools', '20231222'),
+    ('CMake', '3.29.3'),
+    ('Doxygen', '1.11.0'),
+]
+
+dependencies = [
+    ('HDF5', '1.14.3'),
+    ('cURL', '8.7.1'),
+    ('Szip', '2.1.1'),
+    ('zstd', '1.5.6'),
+    ('bzip2', '1.0.8'),
+    ('libxml2', '2.12.7'),
+]
+
+# disable Szip, zlib parallel I/O tests, since these can hang on some systems, e.g. generoso
+#  see: https://github.com/easybuilders/easybuild-easyconfigs/pull/16834
+#  and  https://github.com/easybuilders/easybuild-easyconfigs/pull/17107#issuecomment-1432947172
+#  and https://github.com/easybuilders/easybuild-easyconfigs/pull/18523#issuecomment-1675313158
+preconfigopts = ("sed -i -e 's|@MPIEXEC@ -n 16 ./tst_parallel3|echo \"skipped by EasyBuild\"|g'"
+                 " -e 's|@MPIEXEC@ -n 4 ./tst_parallel5|echo \"skipped by EasyBuild\"|g'"
+                 " -e 's|@MPIEXEC@ -n 4 ./tst_parallel_zlib|echo \"skipped by EasyBuild\"|g'"
+                 " -e 's|@MPIEXEC@ -n 4 ./tst_parallel_compress|echo \"skipped by EasyBuild\"|g'"
+                 " %(builddir)s/%(namelower)s-c-%(version)s/nc_test4/run_par_test.sh.in &&")
+
+# make sure both static and shared libs are built
+# and disable "remote" tests that access a unreliable external test server over internet
+configopts = [
+    "-DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF",
+    "-DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=ON",
+]
+
+buildopts = 'CFLAGS="-O3 -fPIC"'
+
+# some tests try to start 16 MPI ranks, so we need to allow oversubscription to avoid failing tests
+pretestopts = "OMPI_MCA_rmaps_base_oversubscribe=1 "
+
+runtest = 'test'
+
+moduleclass = 'data'
diff --git a/s/Szip/Szip-2.1.1-GCCcore-13.3.0.eb b/s/Szip/Szip-2.1.1-GCCcore-13.3.0.eb
new file mode 100644
index 00000000..a4bdc38a
--- /dev/null
+++ b/s/Szip/Szip-2.1.1-GCCcore-13.3.0.eb
@@ -0,0 +1,32 @@
+# IT4Innovations
+# LK 2024
+
+easyblock = 'ConfigureMake'
+
+name = 'Szip'
+version = '2.1.1'
+
+homepage = 'https://support.hdfgroup.org/doc_resource/SZIP/'
+
+description = """
+ Szip compression software, providing lossless compression of scientific data
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://support.hdfgroup.org/ftp/lib-external/szip/%(version)s/src']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['21ee958b4f2d4be2c9cabfa5e1a94877043609ce86fde5f286f105f7ff84d412']
+
+builddependencies = [
+    ('binutils', '2.42'),
+]
+
+sanity_check_paths = {
+    'files': ["lib/libsz.a", "lib/libsz.%s" % SHLIB_EXT] +
+             ["include/%s" % x for x in ["ricehdf.h", "szip_adpt.h", "szlib.h"]],
+    'dirs': [],
+}
+
+moduleclass = 'tools'
diff --git a/v/VASP/VASP-6.4.3-intel-2023b.eb b/v/VASP/VASP-6.4.3-intel-2023b.eb
new file mode 100644
index 00000000..ceb63251
--- /dev/null
+++ b/v/VASP/VASP-6.4.3-intel-2023b.eb
@@ -0,0 +1,61 @@
+# IT4Innovations 2023
+# L 2024
+
+easyblock = 'MakeCp'
+
+name = 'VASP'
+version = '6.4.3'
+
+homepage = 'http://www.vasp.at'
+docurls = 'https://www.vasp.at/wiki/index.php/The_VASP_Manual'
+description = """The Vienna Ab initio Simulation Package (VASP) is a local computer program for atomic scale
+materials modelling, e.g. electronic structure calculations and quantum-mechanical molecular dynamics,
+from first principles.
+
+To use VASP, you need an academic license from University of Vienna. Follow the instructions at https://www.vasp.at/index.php/faqs.
+
+Please send us a list of authorized users and their IDs for which you need access (use only http://support.it4i.cz/rt). We are responsible for verifying your licenses."""
+
+toolchain = {'name': 'intel', 'version': '2023b'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+# Vasp is proprietary software, see http://www.vasp.at/index.php/faqs on
+# how to get access to the code
+sources = ['%(namelower)s.%(version)s.tgz']
+patches = ['VASP-6.3.2-intel-2021b-adjust-makefile.patch']
+checksums = [
+    {'vasp.6.4.3.tgz': 'fe30e773f2a3e909b5e0baa9654032dfbdeff7ec157bc348cee7681a7b6c24f4'},
+    {'VASP-6.3.2-intel-2021b-adjust-makefile.patch':
+     '007efcd2c0ba05145615c6df21726d6f95460fae2ed7f7478349f09e14023676'},
+]
+
+# use serial compilation of W90, see https://www.vasp.at/wiki/index.php/Makefile.include#Wannier90_.28optional.29
+# Important: In case of Wannier90 3.x, you should compile a serial version by removing COMMS=mpi in the make.inc of Wannier90. 
+dependencies = [
+    ('HDF5', '1.14.3'),
+    ('Wannier90', '3.1.0', '-serial'),
+]
+
+prebuildopts = 'cp arch/makefile.include.intel ./makefile.include && '
+
+# AMD/Intel CPU switch - We set xHost by default; change it to -march=core-avx2 when necessary
+import os
+if os.environ.get("CLUSTERNAME") in ["KAROLINA"]:
+    prebuildopts += 'sed -i "s|-xHOST|-march=core-avx2|" makefile.include && '
+    prebuildopts += 'sed -i "s|-march=xHost|-march=core-avx2|" makefile.include && '
+
+# VASP uses LIBS as a list of folders
+prebuildopts += 'unset LIBS && '
+
+buildopts = 'std gam ncl '
+
+parallel = 1
+
+files_to_copy = [(['bin/vasp_std', 'bin/vasp_gam', 'bin/vasp_ncl'], 'bin')]
+sanity_check_paths = {
+    'files': ['bin/vasp_std', 'bin/vasp_gam', 'bin/vasp_ncl'],
+    'dirs': []
+}
+modluafooter = 'add_property("state","license")'
+
+moduleclass = 'chem'
diff --git a/w/Wannier90/Wannier90-3.1.0-intel-2024a-serial.eb b/w/Wannier90/Wannier90-3.1.0-intel-2024a-serial.eb
new file mode 100644
index 00000000..fbcee142
--- /dev/null
+++ b/w/Wannier90/Wannier90-3.1.0-intel-2024a-serial.eb
@@ -0,0 +1,39 @@
+# IT4Innovations
+# LK 2024
+
+easyblock = 'MakeCp'
+
+name = 'Wannier90'
+version = '3.1.0'
+versionsuffix = '-serial'
+
+homepage = 'http://www.wannier.org'
+description = """A tool for obtaining maximally-localised Wannier functions"""
+
+toolchain = {'name': 'intel', 'version': '2024a'}
+toolchainopts = {'usempi': True}
+
+github_account = 'wannier-developers'
+source_urls = [GITHUB_LOWER_SOURCE]
+sources = [{'download_filename': 'v%(version)s.tar.gz', 'filename': SOURCELOWER_TAR_GZ}]
+patches = ['Wannier90_3x_ignore_makeinc.patch']
+checksums = [
+    '40651a9832eb93dec20a8360dd535262c261c34e13c41b6755fa6915c936b254',  # wannier90-3.1.0.tar.gz
+    '561c0d296e0e30b8bb303702cd6e41ded54c153d9b9e6cd9cab73858e5e2945e',  # Wannier90_3x_ignore_makeinc.patch
+]
+
+buildopts = 'all F90=$F90 MPIF90=$MPIF90 FCOPTS="$FFLAGS" LDOPTS="$FFLAGS" '
+buildopts += 'LIBDIR="$LAPACK_LIB_DIR" LIBS="$LIBLAPACK" '
+
+# compile serial version for use with VASP per
+# https://www.vasp.at/wiki/index.php/Makefile.include#Wannier90_.28optional.29
+#buildopts += 'COMMS=mpi'
+
+files_to_copy = [(['wannier90.x', 'postw90.x'], 'bin'), (['libwannier.a'], 'lib')]
+
+sanity_check_paths = {
+    'files': ['bin/wannier90.x', 'bin/postw90.x', 'lib/libwannier.a'],
+    'dirs': []
+}
+
+moduleclass = 'chem'