# IT4Innovations 2021
# JK2021

easyblock = 'CMakeMake'

name = 'QMCPACK'
version = '3.12.0'
versionsuffix = "-Python-%(pyver)s-lowopt"

homepage = "https://qmcpack.org/"
description = """QMCPACK, is a modern high-performance open-source Quantum Monte Carlo (QMC) simulation code. Its main applications are electronic structure calculations of molecular, quasi-2D and solid-state systems. Variational Monte Carlo (VMC), diffusion Monte Carlo (DMC) and a number of other advanced QMC algorithms are implemented. Orbital space auxiliary field QMC (AFQMC) has recently been added. By directly solving the Schrodinger equation, QMC methods offer greater accuracy than methods such as density functional theory, but at a trade-off of much greater local_computational expense.
"""

# 3.12.0 update - už se zkompiluje bez 9.3.0
# vyžaduje GCC 9.3.0, které nemá podporu pro naše AMD procesory => kompilace s druhým AMD hackem je broken
toolchain = {'name': 'intel', 'version': '2021b'}
import os
if os.environ.get("CLUSTERNAME") in ["KAROLINA"]:
   toolchainopts = {'opt': True, 'pic': True, 'usempi': True, 'optarch': 'march=core-avx2'}
#   prebuildopts = "echo %(builddir)s && while read i; do echo $i; sed 's|-xHost|-march=core-avx2|g' -i $i; done < <(grep xHost %(builddir)s -R | cut -d ':' -f 1 | sort -u) &&"
else:
   toolchainopts = {'opt': True, 'pic': True, 'usempi': True}

source_urls = ['https://github.com/QMCPACK/qmcpack/archive/']
sources = ['v%(version)s.tar.gz']

builddependencies = [('CMake', '3.20.1', '', True)]

dependencies = [
    ('libxml2', '2.9.10'),
    ('Boost', '1.77.0'),
    ('HDF5', '1.12.1', '', ('iimpi', '2021b')),
    ('Python', '3.9.6'),
    ('h5py', '3.6.0'),
    ('SciPy-bundle', '2021.05', '-foss-2021a', True),
#    ('GCC', '9.3.0', '', True), # obejití podmínky GCC 9.3.0
]

separate_build_dir = True

configopts = ' -DENABLE_SOA=1 '

# prekopiruje nexus knihovny o kterych install file tvrdi, ze nejsou potreba
# ale evidentne to bez nich nejede
preinstallopts = [
		  ' mkdir -p %(installdir)s/nexus && ',
		  ' cp -r %(builddir)s/qmcpack-%(version)s/nexus/lib %(installdir)s/nexus/lib && ',
]


# prida nexus knihovny do PYTHONPATH
modextrapaths = {'PYTHONPATH': 'nexus/lib'}

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

moduleclass = 'phys'
