easyblock = 'MakeCp'

name = 'VASP'
version = '5.4.4'
versionsuffix = '-CUDA-9.1.85-mkl=sequential'

homepage = 'http://www.vasp.at'
description = """The Vienna Ab initio Simulation Package (VASP) is a 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 academic licenses from University of Wiena. Follow the instructions https://www.vasp.at/index.php/faqs.

Then send us please a list of authorized users and their ID for which you need this access. Please use only http://support.it4i.cz/rt. We are responsible to verify your licenses. After succesfull verification You will be granted to use VASP in our enviroment."""

toolchain = {'name': 'intel', 'version': '2017c'}
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.tar.gz']

checksums = ['8ac646b108f974371eef398973373bf6']

dependencies = [
    ('zlib', '1.2.11', '', True),
    ('CUDA', '9.1.85', '', True),
]

prebuildopts = 'cp arch/makefile.include.linux_intel ./makefile.include && '

# path to libfftw3xf_intel.a is hardcoded in makefile.include
prebuildopts += 'sed -i "s|\$(MKLROOT)/interfaces/fftw3xf|\$(FFTW_LIB_DIR)|" makefile.include && '

# remove mkl flag to prevent mixing dynamic libs with the static libs in
# LIBBLACS/SCALAPACK
prebuildopts += 'sed -i "s|-mkl=sequential ||" makefile.include && '
prebuildopts += 'sed -i "s|BLAS       =|BLAS       = -mkl=sequential|" makefile.include && '

# FLAG
prebuildopts += 'sed -i "s|OFLAG      = -O2|OFLAG      = -O2 -ip -xHost|" makefile.include && '
prebuildopts += 'sed -i "s|FFLAGS     = -assume byterecl -w|FFLAGS     = -FR -assume byterecl|" makefile.include && '

# CUDA
prebuildopts += 'sed -i "s|CUDA_ROOT  ?= /usr/local/cuda/|CUDA_ROOT  ?= $EBROOTCUDA|" makefile.include && '

# VASP uses LIBS as a list of folders
prebuildopts += 'unset LIBS && '

#prebuildopts += 'exit 1'

#buildopts = 'all BLACS="$LIBBLACS" SCALAPACK="$LIBSCALAPACK" '
buildopts = 'std gam ncl gpu gpu_ncl'

parallel = 1

files_to_copy = [(['bin/vasp_std',
                   'bin/vasp_gam',
                   'bin/vasp_ncl',
                   'bin/vasp_gpu_ncl',
                   'bin/vasp_gpu'],
                  'bin')]

sanity_check_paths = {
    'files': [
        'bin/vasp_std',
        'bin/vasp_gam',
        'bin/vasp_ncl',
        'bin/vasp_gpu_ncl',
        'bin/vasp_gpu'],
    'dirs': []}

modluafooter = 'add_property("state","testing")'

moduleclass = 'phys'
