Skip to content

Nonlinear Preconditioner Support #351

@termi-official

Description

@termi-official

Is your feature request related to a problem? Please describe.

Solving nonlinear problems to find $u$ such that $F(u) = 0$ can be made possible and/or be speed up by providing left and right nonlinear preconditioners, i.e. some other functions $H$ and $G$, such that $G(F(H(\tilde{u}))) = 0$ and $u = H(\tilde{u})$, where $G$, $H$ and $F$ share the same roots. I think [1] gives a nice start here.

I want to solve two problems here.

  1. Support for actual preconditioning as e.g. in ASPIN or Walkers-Xi Anderson mixing.
  2. Support for Dirichlet constraints (see What is a Nonlinear Solver? And How to easily build Newer Ones #345 (comment) for some discussion), where $H$ enforces the constraint to the solution and $G \circ F$ is the condensed problem.

Describe the solution you’d like

I think we can come up with a similar solution as in LinearSolve.jl, to pass $H$ and $G$ into the constructor and applying them at appropriate positions in the respective algorithms.

Describe alternatives you’ve considered

The only alternative which I see for now is, that we can define custom solvers (e.g. ASPIN) directly. However, I think the idea above leads to better composability.

Additional context

See SciML/OrdinaryDiffEq.jl#1570 for more previous discussion related to this topic.

References

[1] Brune, Peter R., et al. "Composing scalable nonlinear algebraic solvers." SIAM Review 57.4 (2015): 535-565.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions