summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/akantu/package.py92
1 files changed, 92 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/akantu/package.py b/var/spack/repos/builtin/packages/akantu/package.py
new file mode 100644
index 0000000000..c58225261f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/akantu/package.py
@@ -0,0 +1,92 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack import *
+
+
+class Akantu(CMakePackage):
+ """
+ Akantu means a little element in Kinyarwanda, a Bantu language. From now
+ on it is also an opensource object-oriented Finite Element library which
+ has the ambition to be generic and efficient.
+
+ """
+ homepage = "https://akantu.ch"
+ url = "https://gitlab.com/akantu/akantu/-/archive/v3.0.0/akantu-v3.0.0.tar.gz"
+ git = "https://gitlab.com/akantu/akantu.git"
+
+ maintainers = ['nrichart']
+
+ version('master', branch='master')
+ version('3.0.0', sha256='7e8f64e25956eba44def1b2d891f6db8ba824e4a82ff0d51d6b585b60ab465db')
+
+ variant('external_solvers', values=any_combination_of('mumps', 'petsc'),
+ description="Activates the implicit solver")
+ variant('mpi', default=True,
+ description="Activates parallel capabilities")
+ variant('python', default=False,
+ description="Activates python bindings")
+
+ depends_on('boost@:1.66', when='@:3.0.99')
+ depends_on('boost')
+ depends_on('lapack')
+ depends_on('cmake@3.5.1:', type='build')
+ depends_on('python', when='+python', type=('build', 'run'))
+ depends_on('py-numpy', when='+python', type=('build', 'run'))
+ depends_on('py-scipy', when='+python', type=('build', 'run'))
+ depends_on('py-pybind11', when='@3.1:+python', type=('build', 'run'))
+
+ depends_on('mumps', when='~mpi external_solvers=mumps')
+ depends_on('mumps+mpi', when='+mpi external_solvers=mumps')
+ depends_on('netlib-scalapack', when='+mpi external_solvers=mumps')
+ depends_on('petsc+double', when='~mpi external_solvers=petsc')
+ depends_on('petsc+double+mpi', when='+mpi external_solvers=petsc')
+
+ depends_on('mpi', when='+mpi')
+ depends_on('scotch', when='+mpi')
+
+ extends('python', when='+python')
+
+ conflicts('gcc@:5.3.99')
+ conflicts('@:3.0.99 external_solvers=petsc')
+ conflicts('@:3.0.99 +python')
+
+ def cmake_args(self):
+ spec = self.spec
+
+ args = [
+ '-DAKANTU_COHESIVE_ELEMENT:BOOL=ON',
+ '-DAKANTU_DAMAGE_NON_LOCAL:BOOL=ON',
+ '-DAKANTU_HEAT_TRANSFER:BOOL=ON',
+ '-DAKANTU_SOLID_MECHANICS:BOOL=ON',
+ '-DAKANTU_STRUCTURAL_MECHANICS:BOOL=OFF',
+ '-DAKANTU_PARALLEL:BOOL={0}'.format(
+ 'ON' if spec.satisfies('+mpi') else 'OFF'),
+ '-DAKANTU_PYTHON_INTERFACE:BOOL={0}'.format(
+ 'ON' if spec.satisfies('+python') else 'OFF'),
+ ]
+
+ if spec.satisfies('@:3.0.99'):
+ args.extend(['-DCMAKE_CXX_FLAGS=-Wno-class-memaccess',
+ '-DAKANTU_TRACTION_AT_SPLIT_NODE_CONTACT:BOOL=OFF'])
+ else:
+ args.append('-DAKANTU_TRACTION_AT_SPLIT_NODE_CONTACT:BOOL=ON')
+
+ solvers = []
+ if spec.satisfies('external_solvers=mumps'):
+ solvers.append('Mumps')
+ args.append('-DMUMPS_DIR:PATH=${0}'.format(spec['mumps'].prefix))
+ if spec.satisfies('external_solvers=petsc'):
+ solvers.append('PETSc')
+
+ if len(solvers) > 0:
+ args.extend([
+ '-DAKANTU_IMPLICIT_SOLVER:STRING={0}'.format(
+ '+'.join(solvers)),
+ '-DAKANTU_IMPLICIT:BOOL=ON'])
+ else:
+ args.append('-DAKANTU_IMPLICIT:BOOL=OFF')
+
+ return args