packages/cp2k: add support for sirius
This commit is contained in:
parent
844a993605
commit
f343d6fc68
1 changed files with 27 additions and 1 deletions
|
@ -40,6 +40,9 @@ class Cp2k(MakefilePackage):
|
||||||
'for density matrix evaluation'))
|
'for density matrix evaluation'))
|
||||||
variant('elpa', default=False,
|
variant('elpa', default=False,
|
||||||
description='Enable optimised diagonalisation routines from ELPA')
|
description='Enable optimised diagonalisation routines from ELPA')
|
||||||
|
variant('sirius', default=False,
|
||||||
|
description=('Enable planewave electronic structure'
|
||||||
|
' calculations via SIRIUS'))
|
||||||
|
|
||||||
depends_on('python', type='build')
|
depends_on('python', type='build')
|
||||||
|
|
||||||
|
@ -79,9 +82,19 @@ class Cp2k(MakefilePackage):
|
||||||
depends_on('pexsi+fortran@0.9.0:0.9.999', when='+pexsi@:4.999')
|
depends_on('pexsi+fortran@0.9.0:0.9.999', when='+pexsi@:4.999')
|
||||||
depends_on('pexsi+fortran@0.10.0:', when='+pexsi@5.0:')
|
depends_on('pexsi+fortran@0.10.0:', when='+pexsi@5.0:')
|
||||||
|
|
||||||
# PEXSI and ELPA need MPI in CP2K
|
# only OpenMP should be consistenly used, all other common things
|
||||||
|
# like ELPA, SCALAPACK are independent and Spack will ensure that
|
||||||
|
# a consistent/compat. combination is pulled in to the dependency graph.
|
||||||
|
depends_on('sirius+fortran+vdwxc+shared+openmp', when='+sirius+openmp')
|
||||||
|
depends_on('sirius+fortran+vdwxc+shared~openmp', when='+sirius~openmp')
|
||||||
|
# to get JSON-based UPF format support used in combination with SIRIUS
|
||||||
|
depends_on('json-fortran', when='+sirius')
|
||||||
|
|
||||||
|
# PEXSI, ELPA and SIRIUS need MPI in CP2K
|
||||||
conflicts('~mpi', '+pexsi')
|
conflicts('~mpi', '+pexsi')
|
||||||
conflicts('~mpi', '+elpa')
|
conflicts('~mpi', '+elpa')
|
||||||
|
conflicts('~mpi', '+sirius')
|
||||||
|
conflicts('+sirius', '@:6.999') # sirius support was introduced in 7+
|
||||||
|
|
||||||
# Apparently cp2k@4.1 needs an "experimental" version of libwannier.a
|
# Apparently cp2k@4.1 needs an "experimental" version of libwannier.a
|
||||||
# which is only available contacting the developer directly. See INSTALL
|
# which is only available contacting the developer directly. See INSTALL
|
||||||
|
@ -291,6 +304,19 @@ def edit(self, spec, prefix):
|
||||||
int(elpa.version[1])))
|
int(elpa.version[1])))
|
||||||
fcflags.append('-I' + os.path.join(elpa_base_path, 'elpa'))
|
fcflags.append('-I' + os.path.join(elpa_base_path, 'elpa'))
|
||||||
|
|
||||||
|
if self.spec.satisfies('+sirius'):
|
||||||
|
sirius = spec['sirius']
|
||||||
|
cppflags.append('-D__SIRIUS')
|
||||||
|
fcflags += ['-I{0}'.format(os.path.join(sirius.prefix, 'fortran'))]
|
||||||
|
libs += [
|
||||||
|
os.path.join(sirius.libs.directories[0],
|
||||||
|
'libsirius_f.{0}'.format(dso_suffix))
|
||||||
|
]
|
||||||
|
|
||||||
|
cppflags.append('-D__JSON')
|
||||||
|
fcflags += ['$(shell pkg-config --cflags json-fortran)']
|
||||||
|
libs += ['$(shell pkg-config --libs json-fortran)']
|
||||||
|
|
||||||
if 'smm=libsmm' in spec:
|
if 'smm=libsmm' in spec:
|
||||||
lib_dir = os.path.join(
|
lib_dir = os.path.join(
|
||||||
'lib', self.makefile_architecture, self.makefile_version
|
'lib', self.makefile_architecture, self.makefile_version
|
||||||
|
|
Loading…
Reference in a new issue