Integration of BlockCatamari/MeshFEMSparse - #115
Open
jpanetta wants to merge 18 commits into
Open
Conversation
…d update all necessary functions.
A typo in `spqr.cmake` prevented the `SuiteSparse::SPQR` from being detected, leading to an unnecessary `find_package(SPQR)` call. This call in turn can bring in a newer system-level SuiteSparse library that conflicts with the older CPM version and breaks the configuration step. We also add `include(suitesparse)` before checking the target in case this was not done previously (i.e., if the other `SuiteSparse` dependencies have been disabled).
… in a PolyFEM-compatible version of Metis in this case. Metis is needed for orderings like cholmod_nested_dissection and cholmod_metis (anything depending on the PARTITION module of CHOLMOD). Newer versions of SuiteSparse package their own customized version of Metis, but until we upgrade we need to bring it in ourselves. Note that PolyFEM includes Metis via `wildmeshing-toolkit` and configures it for 32-bit indices; we bring in the identical git commit and apply matching configuration settings here.
…st-path) and sparsity-update-aware guarded symbolic factorization
…factorization. This prevents strategy switches from causing unnecessary symbolic factorizations and and losing track of adaptive ordering timing statistics. It also requires moving the sparsity pattern ID metadata onto the linear solver object.
… when converting (add shift)
…variant interface to linear solvers.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #115 +/- ##
==========================================
- Coverage 80.73% 79.92% -0.81%
==========================================
Files 51 54 +3
Lines 2118 2257 +139
Branches 280 307 +27
==========================================
+ Hits 1710 1804 +94
- Misses 408 453 +45
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
teseoch
approved these changes
Aug 10, 2026
| // will both be of size `rows() - nfv`, where `nfv` is the number of | ||
| // unique indices in `fixedVars). This differs from MeshFEMSparse's | ||
| // convention of working with full-space RHS and solution vectors. | ||
| struct BCSCHessianWithFixedVars { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Integrate BlockCatamari solver and add support for BlockCSCHessian. Also support sharing linear solvers across descent strategies to avoid unnecessary symbolic factorization work.
The various supported symmetric matrix types are managed by the new
Hessianvariant class, which facilitates the conversions needed when theProblemandSolverwork in different formats.