Closed
Description
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
, andinternal.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:
-
NonlinearSolveApproximateJacobian.jl
-- LBroyden, Broyden, Klement, and other solvers (and utilities) that reduce and are used in https://github.com/SciML/NonlinearSolve.jl/blob/master/src/core/approximate_jacobian.jl. -
NonlinearSolveFirstOrder.jl
-- This is the biggest chunk housing TrustRegion, NewtonRaphson, etc. -
NonlinearSolveSpectralMethods.jl
-- DFSane and contents of https://github.com/SciML/NonlinearSolve.jl/blob/master/src/core/spectral_methods.jl. - Where do we put the extension solvers?
NonlinearSolve.jl
or another subpackageNonlinearSolveExtensionAlgs.jl
?
-
-
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.
Metadata
Metadata
Assignees
Labels
No labels