diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 4a5bebd..b12f26e 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.0","generation_timestamp":"2023-12-30T00:39:01","documenter_version":"1.2.1"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.0","generation_timestamp":"2024-01-07T23:30:34","documenter_version":"1.2.1"}} \ No newline at end of file diff --git a/dev/index.html b/dev/index.html index a4f3f7c..833ad9b 100644 --- a/dev/index.html +++ b/dev/index.html @@ -2,8 +2,8 @@ The Common Solve Interface · CommonSolve.jl

CommonSolve.jl: The Common Solve Definition and Interface

This holds the common solve, init, solve!, and step! commands. By using the same definition, solver libraries from entirely different ecosystems can extend the functions and thus not clash with SciML if both ecosystems export the solve command. The rules are that you must dispatch on one of your own types. That's it. No pirates.

Installation

To install CommonSolve.jl, use the Julia package manager:

using Pkg
 Pkg.add("CommonSolve")

General recommendation

solve function has the default definition

solve(args...; kwargs...) = solve!(init(args...; kwargs...))

So, we recommend defining

init(::ProblemType, args...; kwargs...) :: SolverType
 solve!(::SolverType) :: SolutionType

where ProblemType, SolverType, and SolutionType are the types defined in your package.

In many cases, the SolverType is an object that is iteratively progressed to achieve the solution. In such cases, the step! function can be used:

step!(::SolverType, args...; kwargs...)

To avoid method ambiguity, the first argument of solve, solve!, step!, and init must be dispatched on the type defined in your package. For example, do not define a method such as

init(::AbstractVector, ::AlgorithmType)

API

CommonSolve.initFunction
iter = CommonSolve.init(args...; kwargs...)

Solves an equation or other mathematical problem using the algorithm specified in the arguments. Generally, the interface is:

iter = CommonSolve.init(prob::ProblemType,alg::SolverType; kwargs...)::IterType
-CommonSolve.solve!(iter)::SolutionType

where the keyword arguments are uniform across all choices of algorithms. The iter type will be different for the different problem types.

source
CommonSolve.solveFunction
CommonSolve.solve(args...; kwargs...)

Solves an equation or other mathematical problem using the algorithm specified in the arguments. Generally, the interface is:

CommonSolve.solve(prob::ProblemType,alg::SolverType; kwargs...)::SolutionType

where the keyword arguments are uniform across all choices of algorithms.

By default, solve defaults to using solve! on the iterator form, i.e.:

solve(args...; kwargs...) = solve!(init(args...; kwargs...))
source
CommonSolve.solve!Function
CommonSolve.solve!(iter)

Solves an equation or other mathematical problem using the algorithm specified in the arguments. Generally, the interface is:

iter = CommonSolve.init(prob::ProblemType,alg::SolverType; kwargs...)::IterType
-CommonSolve.solve!(iter)::SolutionType

where the keyword arguments are uniform across all choices of algorithms. The iter type will be different for the different problem types.

source
CommonSolve.step!Function
CommonSolve.step!(iter, args...; kwargs...)

Progress the iterator object (the one returned by CommonSolve.init). The additional arguments typically describe how much to progress the iterator for, and are implementation-specific.

source

Contributing

Reproducibility

The documentation of this SciML package was built using these direct dependencies,
Status `~/work/CommonSolve.jl/CommonSolve.jl/docs/Project.toml`
+CommonSolve.solve!(iter)::SolutionType

where the keyword arguments are uniform across all choices of algorithms. The iter type will be different for the different problem types.

source
CommonSolve.solveFunction
CommonSolve.solve(args...; kwargs...)

Solves an equation or other mathematical problem using the algorithm specified in the arguments. Generally, the interface is:

CommonSolve.solve(prob::ProblemType,alg::SolverType; kwargs...)::SolutionType

where the keyword arguments are uniform across all choices of algorithms.

By default, solve defaults to using solve! on the iterator form, i.e.:

solve(args...; kwargs...) = solve!(init(args...; kwargs...))
source
CommonSolve.solve!Function
CommonSolve.solve!(iter)

Solves an equation or other mathematical problem using the algorithm specified in the arguments. Generally, the interface is:

iter = CommonSolve.init(prob::ProblemType,alg::SolverType; kwargs...)::IterType
+CommonSolve.solve!(iter)::SolutionType

where the keyword arguments are uniform across all choices of algorithms. The iter type will be different for the different problem types.

source
CommonSolve.step!Function
CommonSolve.step!(iter, args...; kwargs...)

Progress the iterator object (the one returned by CommonSolve.init). The additional arguments typically describe how much to progress the iterator for, and are implementation-specific.

source

Contributing

Reproducibility

The documentation of this SciML package was built using these direct dependencies,
Status `~/work/CommonSolve.jl/CommonSolve.jl/docs/Project.toml`
   [38540f10] CommonSolve v0.2.5 `~/work/CommonSolve.jl/CommonSolve.jl`
   [e30172f5] Documenter v1.2.1
and using this machine and Julia version.
Julia Version 1.10.0
 Commit 3120989f39b (2023-12-25 18:01 UTC)
@@ -69,4 +69,4 @@
   [efcefdf7] PCRE2_jll v10.42.0+1
   [83775a58] Zlib_jll v1.2.13+1
   [8e850ede] nghttp2_jll v1.52.0+1
-  [3f19e933] p7zip_jll v17.4.0+2

You can also download the manifest file and the project file.

+ [3f19e933] p7zip_jll v17.4.0+2

You can also download the manifest file and the project file.