Skip to content

Python type FieldsplitSNES #4139

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft

Conversation

JHopeCollins
Copy link
Member

@JHopeCollins JHopeCollins commented Mar 21, 2025

Description

A nonlinear version of PCFieldsplit, this came out of a discussion on slack with @ScottMacLachlan, @pbrubeck, and Matt.

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):

  • 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.
  • Proper test. The one I added now just checks that it runs without crashing.

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.

1 participant