1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# Copyright 2013-2023 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.package import *
class Goma(CMakePackage):
"""A Full-Newton Finite Element Program for Free and Moving Boundary Problems with
Coupled Fluid/Solid Momentum, Energy, Mass, and Chemical Species Transport"""
homepage = "https://www.gomafem.com"
url = "https://github.com/goma/goma/archive/v7.0.0.tar.gz"
git = "https://github.com/goma/goma.git"
maintainers("wortiz")
version("7.1.1", commit="4bebca85ab3840709b44f63502893af6453710e8")
version("7.0.4", commit="27b2cb2477fa92f9457597f588c137de2572ef69")
version("7.0.0", commit="5166896f273e5853e1f32885e20f68317b24979c")
version("release", branch="release")
version("main", branch="main")
# Problem size variants
variant(
"max_conc",
default="4",
values=("4", "8", "10", "15", "20"),
description="Set internal maximum number of species",
)
variant(
"max_external_field",
default="4",
values=("4", "8", "10", "15", "20"),
description="Set internal maximum number of external fields",
)
variant(
"max_prob_var",
default="15",
values=("10", "15", "20", "25", "28", "34", "40", "46", "64"),
description="Set internal maximum number of active equations",
)
variant(
"mde",
default="27",
values=("8", "9", "10", "16", "20", "27", "54"),
description="Set internal maximum DOF per element",
)
variant(
"max_number_matls",
default="9",
values=("9", "10", "15", "20", "25", "30", "45", "50", "55"),
description="Set internal maximum number of materials",
)
# Floating point checks
variant("check_finite", default=False, description="Enable finite computation check")
variant("fpe", default=False, description="Enable floating point exception")
# Optional third party libraries
variant("arpack-ng", default=True, description="Build with ARPACK support")
variant("metis", default=True, description="Build with metis decomposition")
variant("omega-h", default=True, description="Build with Omega_h support")
variant("petsc", default=True, description="Build with PETSc solver support")
variant("sparse", default=True, description="Build with legacy sparse solver")
variant("suite-sparse", default=True, description="Build with UMFPACK support")
# Required dependencies
depends_on("mpi")
depends_on("seacas+applications")
depends_on("trilinos+mpi+epetra+aztec+amesos+stratimikos+teko+mumps+superlu-dist+ml~exodus")
# Optional dependencies
depends_on("arpack-ng", when="+arpack-ng")
depends_on("metis", when="+metis")
depends_on("omega-h+mpi", when="+omega-h")
depends_on("petsc+hypre+mpi~exodusii", when="+petsc")
depends_on("sparse", when="+sparse")
depends_on("suite-sparse", when="+suite-sparse")
def cmake_args(self):
args = []
# Problem sizes
args.append(self.define_from_variant("MAX_CONC", "max_conc"))
args.append(self.define_from_variant("MAX_EXTERNAL_FIELD", "max_external_field"))
args.append(self.define_from_variant("MAX_PROB_VAR", "max_prob_var"))
args.append(self.define_from_variant("MDE", "mde"))
args.append(self.define_from_variant("MAX_NUMBER_MATLS", "max_number_matls"))
# Floating point error checks
args.append(self.define_from_variant("CHECK_FINITE", "check_finite"))
args.append(self.define_from_variant("FP_EXCEPT", "fpe"))
# Configure optional libraries
args.append(self.define_from_variant("ENABLE_ARPACK", "arpack-ng"))
args.append(self.define_from_variant("ENABLE_METIS", "metis"))
args.append(self.define_from_variant("ENABLE_OMEGA_H", "omega-h"))
args.append(self.define_from_variant("ENABLE_PETSC", "petsc"))
args.append(self.define_from_variant("ENABLE_SPARSE", "sparse"))
args.append(self.define_from_variant("ENABLE_UMFPACK", "suite-sparse"))
return args
|