SciML / NonlinearSolve.jl

High-performance and differentiation-enabled nonlinear solvers (Newton methods), bracketed rootfinding (bisection, Falsi), with sparsity and Newton-Krylov support.
https://docs.sciml.ai/NonlinearSolve/stable/
MIT License
238 stars 42 forks source link

Completeness for use in OrdinaryDiffEq.jl #247

Closed ChrisRackauckas closed 5 months ago

ChrisRackauckas commented 1 year ago

This package is almost complete to be used in OrdinaryDiffEq.jl. For other discussions on this topic, see https://github.com/SciML/OrdinaryDiffEq.jl/issues/1570

However, there are some special things done in its nonlinear solvers which we would need to allow for here:

  1. First step is completing the iterator interface https://github.com/SciML/NonlinearSolve.jl/issues/241
  2. We need to have a version of a Quasi-Newton method which forces Jacobian reuse and terminates if convergence starts to fail. I think this can be done just with a SingleFactorizeNewton and some extended TerminationCondition stuff.
  3. For this SingleFactorizeNewton, we'd need to allow it in the iterator form to have a mode where changing u does not cause a new Jacobian to be taken. Thus in the cache interface, we'd need a reevalute_jacobian! that can be handled outside the solver for such cases.

Once those are together, then I think we're good to try it in OrdinaryDiffEq?

ChrisRackauckas commented 1 year ago

Related https://github.com/SciML/NonlinearSolve.jl/pull/206 @frankschae

oscardssmith commented 5 months ago

@ChrisRackauckas I believe this can now be closed, right?