Skip to content

feat: MGR strategy for single phase flow + ALM poromechanics - #4125

Merged
victorapm merged 48 commits into
developfrom
feature/paludettomag1/ALM-singlephase
Aug 28, 2026
Merged

feat: MGR strategy for single phase flow + ALM poromechanics#4125
victorapm merged 48 commits into
developfrom
feature/paludettomag1/ALM-singlephase

Conversation

@victorapm

@victorapm victorapm commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Completes the fully implicit single-phase poromechanics + conforming-fractures ALM path started in #3961 and the MGR recipe work in #3962.

On top of #3961 / #3962, this PR adds:

  • Production-ready coupled sparsity: setSparsityPattern builds the exact union of flow and mechanics patterns (incl. well/perforation blocks for reservoir-and-wells)
  • Per-mesh-body dR/dAperture row offsets through assembleHydrofracFluxTerms (fixes multi-body row aliasing); reject unsupported multi-target setups
  • Dedicated ALM kernels and a nested MGR strategy for the displacement/bubble F-block
  • singlePhasePoromechanicsConformingFracturesALMReservoirFVM MGR strategy that eliminates the well block on a third level
  • hypredrive near-null space from rigid-body modes (six vectors per mesh body)
  • Shared appendSparsityPattern utility and tighter ALM MGR field/thermal guards

jafranc and others added 30 commits February 2, 2026 13:59
This reverts commit b877903.
…ciepe

# Conflicts:
#	src/coreComponents/linearAlgebra/utilities/LinearSolverParameters.hpp
  - The mechanics solver replaced the existing flow sparsity pattern, discarding flow and custom FIM couplings.
  - Pressure–bubble couplings checked for the nonexistent wrapper bubbleElementsList instead of the registered bubbleCells key.

Fixed both by unioning the flow and mechanics patterns before adding FIM couplings, and by using the correct wrapper key
@victorapm victorapm added the ci: run integrated tests Allows to run the integrated tests in GEOS CI label Aug 18, 2026
@victorapm victorapm added the flag: no rebaseline Does not require rebaseline label Aug 18, 2026
@victorapm victorapm added the ci: run code coverage enables running of the code coverage CI jobs label Aug 18, 2026

@jafranc jafranc left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work @victorapm 👍
Nice utilities introduced here in addition to the core enabling of MGR for 1p-ALM contact

@jhuang2601 jhuang2601 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @victorapm for adding mgr recipe for ALM with FIM coupling.
It is working well for two analytical examples (slanted fault and vertical fault).

@frankfeifan frankfeifan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything looks good. Thanks!

void HydrofractureSolver< POROMECHANICS_SOLVER >::setUpDflux_dApertureMatrix( DomainPartition & domain,
DofManager const & dofManager,
CRSMatrix< real64, globalIndex > & localMatrix )
void HydrofractureSolver< POROMECHANICS_SOLVER >::setUpDflux_dApertureMatrix( DomainPartition & domain )

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

setUpDflux_dApertureMatrix now exists in three solvers, and their differences look small. I think it is possible to do some refactor (maybe in another PR) and pull into a share utility hearder at some point to save duplicated lines.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Frank, good point. @jafranc is working on refactoring the LM/ALM codes, maybe your suggestion can go in?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for letting me know! I'll port this comment there.

@victorapm

Copy link
Copy Markdown
Contributor Author

Needs code owner review and we're ready to merge

@herve-gross

Copy link
Copy Markdown
Contributor

@OmarDuran thanks for taking a look

@victorapm victorapm added the ci: run device builds Allows to run the device (CUDA/HIP) builds label Aug 28, 2026
Comment thread src/coreComponents/linearAlgebra/interfaces/hypre/hypredrive.cpp Outdated

@OmarDuran OmarDuran left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work @victorapm, I left one minor suggestion and one potential suggestion.

victorapm and others added 3 commits August 28, 2026 01:21
@victorapm
victorapm merged commit d83bf22 into develop Aug 28, 2026
22 checks passed
@victorapm
victorapm deleted the feature/paludettomag1/ALM-singlephase branch August 28, 2026 12:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci: run code coverage enables running of the code coverage CI jobs ci: run device builds Allows to run the device (CUDA/HIP) builds ci: run integrated tests Allows to run the integrated tests in GEOS CI flag: no rebaseline Does not require rebaseline flag: ready for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants