mfem: add MUMPs option (#42929)

* Added MUMPs option to mfem
* implement suggestions
* loosened mumps+metis dependency to just mumps
This commit is contained in:
victor-decaria-nnl 2024-03-14 12:09:24 -04:00 committed by GitHub
parent c38ef72b06
commit 8f14acb139
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -184,6 +184,7 @@ class Mfem(Package, CudaPackage, ROCmPackage):
variant("strumpack", default=False, description="Enable support for STRUMPACK")
variant("suite-sparse", default=False, description="Enable serial, sparse direct solvers")
variant("petsc", default=False, description="Enable PETSc solvers, preconditioners, etc.")
variant("mumps", default=False, description="Enable MUMPS solver.")
variant("slepc", default=False, description="Enable SLEPc integration")
variant("sundials", default=False, description="Enable Sundials time integrators")
variant("pumi", default=False, description="Enable functionality based on PUMI")
@ -254,6 +255,7 @@ class Mfem(Package, CudaPackage, ROCmPackage):
conflicts("+slepc", when="~petsc")
conflicts("+pumi", when="~mpi")
conflicts("timer=mpi", when="~mpi")
conflicts("+mumps", when="~mpi")
# See https://github.com/mfem/mfem/issues/2957
conflicts("^mpich@4:", when="@:4.3+mpi")
@ -349,6 +351,7 @@ class Mfem(Package, CudaPackage, ROCmPackage):
depends_on(
f"slepc+rocm amdgpu_target={gfx}", when=f"+rocm+slepc amdgpu_target={gfx} ^petsc+rocm"
)
depends_on("mumps@5.1.1:", when="+mumps")
depends_on("mpfr", when="+mpfr")
depends_on("netcdf-c@4.1.3:", when="+netcdf")
depends_on("unwind", when="+libunwind")
@ -614,6 +617,7 @@ def find_optional_library(name, prefix):
"MFEM_MPIEXEC=%s" % mfem_mpiexec,
"MFEM_MPIEXEC_NP=%s" % mfem_mpiexec_np,
"MFEM_USE_EXCEPTIONS=%s" % yes_no("+exceptions"),
"MFEM_USE_MUMPS=%s" % yes_no("+mumps"),
]
# Determine C++ standard to use:
@ -1106,6 +1110,17 @@ def find_optional_library(name, prefix):
"HIOP_LIB=%s" % ld_flags_from_library_list(hiop_libs),
]
if "+mumps" in spec:
mumps = spec["mumps"]
mumps_opt = ["-I%s" % mumps.prefix.include]
if "+openmp" in mumps:
if not self.spec.satisfies("%apple-clang"):
mumps_opt += [xcompiler + self.compiler.openmp_flag]
options += [
"MUMPS_OPT=%s" % " ".join(mumps_opt),
"MUMPS_LIB=%s" % ld_flags_from_library_list(mumps.libs),
]
make("config", *options, parallel=False)
make("info", parallel=False)