Skip to content

AuxiliaryOperatorSNES & FieldsplitSNES#4544

Draft
JHopeCollins wants to merge 29 commits into
mainfrom
JHopeCollins/auxiliary-snes
Draft

AuxiliaryOperatorSNES & FieldsplitSNES#4544
JHopeCollins wants to merge 29 commits into
mainfrom
JHopeCollins/auxiliary-snes

Conversation

@JHopeCollins
Copy link
Copy Markdown
Member

@JHopeCollins JHopeCollins commented Sep 4, 2025

Description

Some Python type SNES classes for building nonlinear solvers

AuxiliaryOperatorSNES

A nonlinear version of AuxiliaryOperatorPC, for building nonlinear preconditioners from approximate operators, e.g. preconditioned nonlinear Richardson iterations.

Still to do:

  • Docstring
  • Tests
  • Demo?

FieldsplitSNES

A nonlinear version of PCFieldsplit,it can use either additive (Jacobi) or multiplicative (Gauss-Seidel) versions, exactly analogous to the linear version.

  • Additive solves each "diagonal" block of the nonlinear problem for each field, with all other fields held at the current value.
  • Multiplicative solves each "diagonal" block of the nonlinear problem for each field, and uses the updated values when solving for subsequent fields. Currently solves one field at a time, in the order they appear in the mixed space.

Still to do (mostly adding options to match PCFieldsplit):

  • Docstring
  • Allow grouping fields together with snes_fieldsplit_%d_fields.
  • Allow setting the order of the field solves with snes_fieldsplit_%d_fields.
  • Default fields with snes_fieldsplit_default.
  • Default options with fieldsplit prefix. If we collect them in initialize and pass them as a dictionary to the NLVS of each field, they will take lower priority than any fieldsplit_%d options in the global dictionary (including those put there by the parent NLVS).
  • view method.
  • Does the update method need to contain anything?
  • Documentation and demo.
  • Tests.

Comment thread firedrake/preconditioners/auxiliary_snes.py Outdated
Comment thread firedrake/preconditioners/auxiliary_snes.py Outdated
@miguelcoolchips
Copy link
Copy Markdown
Contributor

This functionality could be very useful to us. Are there plans to merge it?

@JHopeCollins
Copy link
Copy Markdown
Member Author

@miguelcoolchips Are you interested in the AuxiliaryOperatorSNES or the FieldsplitSNES? Or both? I think the AuxiliaryOperatorSNES doesn't need too much more to get it to a reviewable state, but the FieldsplitSNES still has some kinks to work out. I just ran out of time to work on this around other things.

@miguelcoolchips
Copy link
Copy Markdown
Contributor

@miguelcoolchips Are you interested in the AuxiliaryOperatorSNES or the FieldsplitSNES? Or both? I think the AuxiliaryOperatorSNES doesn't need too much more to get it to a reviewable state, but the FieldsplitSNES still has some kinks to work out. I just ran out of time to work on this around other things.

We are interested in FieldsplitSNES.

Comment thread firedrake/preconditioners/auxiliary_snes.py Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants