Skip to content

[RFC] Splitting up NonlinearSolve #456

Closed
@avik-pal

Description

@avik-pal

Similar to the treatment that was given to OrdinaryDiffEq, we want to split up this package into subpackages. This will be much easier to do here, since all the solvers here are extremely modular (that was one of the central points of our paper https://arxiv.org/abs/2403.16341). This is my first proposal:

  • NonlinearSolveBase.jl
    • currently houses the termination conditions and AD rules for forward mode
    • This will also house most of what is present in timer_ouputs.jl, abstract_types.jl, and internal.jl internal/. The AD wrappers and such also go here via extensions
  • LineSearch.jl (empty repo exists as of now): Let's move https://github.com/SciML/NonlinearSolve.jl/blob/master/src/globalization/line_search.jl to that package. We can iterate on a 2.0 design and move to native solvers later (is that okay @Vaibhavdixit02?) DONE WAITING FOR A MERGE
  • Next we do the main solver packages:
  • NonlinearSolve.jl -- We define the default algorithms here. We need to pull in all the packages (except Spectral methods) for this part.
  • BracketingNonlinearSolve -- Split out of SimpleNonlinearSolve
  • SimpleNonlinearSolve -- migrate to using bracketingnonlinearsolve and nonlinearsolvebase

To cut down more aggressively on compile times we need to finish NonlinearSolveBase.jl and use that in-place of DiffEqBase.jl.

Also this unblocks solvers like #404 that need to rely on TaylorDiff and heavier packages.

cc @oscardssmith @ChrisRackauckas

Metadata

Metadata

Assignees

No one assigned

    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