Skip to content

Allow integrating hypre AMS/ADS in FSPs#4412

Draft
nmnobre wants to merge 4 commits into
libMesh:develfrom
nmnobre:hypre-next
Draft

Allow integrating hypre AMS/ADS in FSPs#4412
nmnobre wants to merge 4 commits into
libMesh:develfrom
nmnobre:hypre-next

Conversation

@nmnobre

@nmnobre nmnobre commented Feb 26, 2026

Copy link
Copy Markdown
Member

@moosebuild

Copy link
Copy Markdown

Job Coverage, step Generate coverage on 71c9d19 wanted to post the following:

Coverage

783e82 #4412 71c9d1
Total Total +/- New
Rate 65.47% 65.47% -0.00% 100.00%
Hits 78226 78232 +6 31
Misses 41255 41263 +8 0

Diff coverage report

Full coverage report

This comment will be updated on new commits.

@lindsayad

Copy link
Copy Markdown
Member

Is this going to rely on the libMesh DM?

@nmnobre

nmnobre commented Jun 8, 2026

Copy link
Copy Markdown
Member Author

I was using petsc_auto_fieldsplit() with --solver-variable-names to test this (is that what you meant?).
The current implementation in set_petsc_aux_data() only requires a variable/split index (so there must be a one-to-one correspondence there between no. of vars and splits), but I don't think there were any particular assumptions on who/what does the splitting, as long as PETSc is informed about it somehow.

In the discussion I linked above we agreed that the proper way to do this was probably to provide a callback that PETSc would call just-in-time whenever it needs info to build the preconditioner with sufficient information passed to the client application (i.e. libMesh) so it can disambiguate what variable/split needs preconditioning. That would then lift the requirement for only a single-level of field-split with one-to-one variables and splits (like I have here at present).

@lindsayad

lindsayad commented Jun 8, 2026

Copy link
Copy Markdown
Member

I probably don't fully understand the situation here but in MOOSE we have examples of

  • nested field splits
  • one split with multiple variables
  • multiple splits of one variable (contact-interface dofs and non-contact-interface dofs for example)

I'll note that it's been a long-standing goal of mine to unify the libMesh and MOOSE DMs. I think each has features that the other does not. The MOOSE DM, for instance, doesn't have geometric multigrid support

@nmnobre

nmnobre commented Jun 8, 2026

Copy link
Copy Markdown
Member Author

I know we do, and I know as it stands this implementation is limiting (thus the condition to return early if the assumption doesn't hold).

I probably don't fully understand the situation here

I think the problem is I don't fully understand the situation. That's (partially) why this is on hold. I don't really know how PETSc DM works.

I'll note that it's been a long-standing goal of mine to unify the libMesh and MOOSE DMs

Yes(!), I never understood why some of the functionality was reimplemented, and to be frank I always had doubts as to whether they're actually playing perfectly nice with each other. I remember lamenting the situation with @roystgnr, but I just can't find that conversation anywhere, might've dreamt it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants