Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

{chem,numlib}[intel/2023a] WIEN2k v24.1, DFT-D3 v3.2.0, FFTW.MPI v3.3.10, ... #22133

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions easybuild/easyconfigs/d/DFT-D3/DFT-D3-3.2.0-intel-2023a.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
easyblock = 'MakeCp'

name = 'DFT-D3'
version = '3.2.0'

homepage = 'https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3'
description = """DFT-D3 implements a dispersion correction for density functionals, Hartree-Fock and semi-empirical
quantum chemical methods."""

toolchain = {'name': 'intel', 'version': '2023a'}

source_urls = ['https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3']
sources = [{'download_filename': 'dftd3.tgz', 'filename': SOURCELOWER_TGZ}]
checksums = ['d97cf9758f61aa81fd85425448fbf4a6e8ce07c12e9236739831a3af32880f59']

# Note that the DFT-D3 tarball is named as "dftd3.tgz" with no version
# numbering. Also, the authors are prone (alas) to stealth upgrades, so that two
# tarballs with the same version number can have different checksums. For this
# reason, it is suggested to manually download and rename the tarball. The
# checksum may also need updating from time to time.
# Checksum last updated: 20 September 2018
# Date tarball was reported to have been modified: 14 June 2016
prebuildopts = "sed -i 's/OSTYPE=LINUXL/OSTYPE=LINUXI/' Makefile && "

files_to_copy = [(['dftd3'], 'bin'), (['man.pdf'], 'doc')]

sanity_check_paths = {
'files': ['bin/dftd3'],
'dirs': [],
}

sanity_check_commands = ['dftd3']

moduleclass = 'chem'
19 changes: 19 additions & 0 deletions easybuild/easyconfigs/f/FFTW.MPI/FFTW.MPI-3.3.10-iimpi-2023a.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name = 'FFTW.MPI'
version = '3.3.10'

homepage = 'https://www.fftw.org'
description = """FFTW is a C subroutine library for computing the discrete Fourier transform (DFT)
in one or more dimensions, of arbitrary input size, and of both real and complex data."""

toolchain = {'name': 'iimpi', 'version': '2023a'}
toolchainopts = {'pic': True}

source_urls = [homepage]
sources = ['fftw-%(version)s.tar.gz']
checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']

dependencies = [('FFTW', '3.3.10')]

runtest = 'check'

moduleclass = 'numlib'
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name = 'FFTW'
version = '3.3.10'

homepage = 'https://www.fftw.org'
description = """FFTW is a C subroutine library for computing the discrete Fourier transform (DFT)
in one or more dimensions, of arbitrary input size, and of both real and complex data."""

toolchain = {'name': 'intel-compilers', 'version': '2023.1.0'}
toolchainopts = {'pic': True}

source_urls = [homepage]
sources = [SOURCELOWER_TAR_GZ]
checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']

# no quad precision, requires GCC v4.6 or higher
# see also
# https://www.fftw.org/doc/Extended-and-quadruple-precision-in-Fortran.html
with_quad_prec = False

# compilation fails on AMD systems when configuring with --enable-avx-128-fma,
# because Intel compilers do not support FMA4 instructions
use_fma4 = False

runtest = 'check'

moduleclass = 'numlib'
81 changes: 81 additions & 0 deletions easybuild/easyconfigs/w/WIEN2k/WIEN2k-24.1-intel-2023a.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name = 'WIEN2k'
version = '24.1'

homepage = 'http://www.wien2k.at/'
description = """The program package WIEN2k allows to perform electronic structure calculations of solids
using density functional theory (DFT). It is based on the full-potential (linearized) augmented plane-wave
((L)APW) + local orbitals (lo) method, one among the most accurate schemes for band structure calculations.
WIEN2k is an all-electron scheme including relativistic effects and has many features."""

toolchain = {'name': 'intel', 'version': '2023a'}

sources = ['%(name)s_%(version)s.tar']
patches = [
'WIEN2k-23.2_fix_libxc_for_lapw0_mpi.patch',
'WIEN2k-23.2_fix_system_stderr_redirection.patch',
Comment on lines +14 to +15
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For 21.1 and 23.2 the version number of the patch was updated with each version of WIEN2k even though the patches themselves did not change. Maybe it's a good idea to either stick with this convention, or possibly change it retroactively? In any case it does not make much sense to have a mismatch between the version number in the patch and the easyconfig.

Copy link
Member

@boegel boegel Jan 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As long as the patch still applies, there's no reason to introduce a copy of the patch.

We use that approach pretty consistently across easyconfig files...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, you're right, I guess it is the older configs that should be updated in a separate PR instead.

]
checksums = [
{'WIEN2k_24.1.tar': '15ccceea0fe64c2bb94b3e7252c36537c04c8fd7c0ae46367e837cedb5402713'},
{'WIEN2k-23.2_fix_libxc_for_lapw0_mpi.patch': '1cc480a4824d9185ad5918dfc68c47bcb7826114626c8133d573be901bbdca84'},
{'WIEN2k-23.2_fix_system_stderr_redirection.patch':
'eb3f987b1f839b9f10c315d3f7a57e181e46bc98bec3a18e5b9942689b75fcc7'},
]

download_instructions = """
WIEN2k can be ordered at http://susi.theochem.tuwien.ac.at/index.html.
"""

dependencies = [
('Python', '3.11.3'),
('Perl', '5.36.1'),
('DFT-D3', '3.2.0'),
('ELPA', '2023.05.001'),
('FFTW.MPI', '3.3.10'),
('libxc', '6.2.2'),
]

osdependencies = [
('glibc-devel', 'libc6-dev'), # required for libpthread.
('tcsh')
]

# remote = 'pbsssh'
# If using a Slurm batch system it is highly recommended to use
# 'srun -n_NP_ _EXEC_' for wien_mpirun
wien_mpirun = 'mpirun -np _NP_ _EXEC_'
use_remote = False
mpi_remote = False
wien_granularity = True
taskset = 'no'

# Change as needed, these are the defaults
# nmatmax = 19000
# nume = 6000

fix_perl_shebang_for = [
'iniel_pressure_in2reader.pl_lapw',
'iniel_pressure_reader.pl_lapw',
'setrmt_lapw',
'elast_setup_input.pl_lapw',
'bashtime2csh.pl_lapw',
]

# skip running of serial/parallel benchmark, because links to download test_case.tar.gz and mpi-benchmark.tar.gz
# from http://www.wien2k.at/reg_user/benchmark/ that are used by WIEN2k easyblock are broken...
runtest = False

tests = [
# test case 1: NaCl
('NaCl', '-b', '-i 100', [r'^:DIS.*0.1', r'^:ENE.*-1248.1']),
# test case 2: TiO2
('TiO2',
'-b -numk 1000 -rkmax 7.5',
'-in1ef -cc 0.00001 -fc 0.5 -i 100',
[
r'^:ENE.*-4018.0',
r'^:FGL001.*\s+[0.]+\s+[0.]+\s+[0.]+\s+total forces',
r'^:FGL002.*133.*total forces',
]),
]

moduleclass = 'chem'