feat: Add MUMPS direct sparse solver support#212
feat: Add MUMPS direct sparse solver support#212afbrbza wants to merge 14 commits intolabmec:developfrom
Conversation
…red Libs. Working with Static Lib using APPLE
|
Hello, This feature is quite useful, specially when using ARM macs. I didn't have the time to look through everything, but I would like to share a few things that caught my attention:
What do you think, @philippedevloo , @giavancini , @afbrbza ? |
…omplex types and enhance OpenMP integration checks
…rences and add GetData method for direct access to internal arrays
|
Hi, thank you for the thorough review! Here is a point-by-point response: 1. 2. Header descriptions should be reviewed 3. 4. 5. MUMPS complex/real support not checked at CMake level 6. Document real-only support; abort at runtime for complex types
Additional note — MUMPS and Pardiso can be used together Unit test comparing both solvers CI fix — MUMPS-specific StrMatrix sources compiled unconditionally |
|
The ZMUMPS (
References to complex support as a planned future release have been removed from headers and comments accordingly. To validate this, the existing |
Summary
This PR integrates the MUMPS (MUltifrontal Massively Parallel sparse direct Solver) library into NeoPZ as a new direct solver option for sparse linear systems.
What was added
New solver and matrix classes
TPZMumpsSolver(Solvers/): A newTPZMatrixSolversubclass that wraps the MUMPS C interface (dmumps_c). Supports symmetric positive definite, symmetric indefinite, and non-symmetric systems. Exposes ICNTL parameter control for fine-tuningMUMPS behavior.
TPZFYsmpMatrixMumps(Matrix/): Non-symmetric sparse matrix (Yale format) backed by MUMPS for factorization and solve.TPZSYsmpMatrixMumps(Matrix/): Symmetric sparse matrix (Yale format) backed by MUMPS. Both classes store COO format arrays (1-based indexing) as required by MUMPS.Structural matrix integration
TPZSSpStructMatrixandTPZSpStructMatrixwere updated to optionally useTPZFYsmpMatrixMumps/TPZSYsmpMatrixMumpswhen MUMPS is enabled.CMake build system
cmake/EnableMUMPS.cmaketo detect and link MUMPS and its dependencies (BLAS, LAPACK, ScaLAPACK, OpenMP).USING_MUMPSCMake option.Testing