Skip to content

Commit f492b1d

Browse files
Merge pull request #839 from ChrisRackauckas-Claude/extend-api-documentation
Extend API section with additional solver libraries
2 parents ee251bd + aaab07d commit f492b1d

File tree

11 files changed

+365
-6
lines changed

11 files changed

+365
-6
lines changed

docs/Project.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
99
ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66"
1010
DAEProblemLibrary = "dfb8ca35-80a1-48ba-a605-84916a45b4f8"
1111
DASKR = "165a45c3-f624-5814-8e85-3bdf39a7becd"
12+
DASSL = "e993076c-0cfd-5d6b-a1ac-36489fdf7917"
1213
DDEProblemLibrary = "f42792ee-6ffc-4e2a-ae83-8ee2f22de800"
1314
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
1415
DelayDiffEq = "bcd4f6db-9728-5f36-b5f7-82caef46ccdb"
@@ -22,8 +23,10 @@ FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41"
2223
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
2324
IncompleteLU = "40713840-3770-5561-ab4c-a76e7d0d7895"
2425
JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
26+
LSODA = "7f56f5a3-f504-529b-bc02-0b1fe5e64312"
2527
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
2628
NonlinearSolve = "8913a72c-1f9b-4ce2-8d82-65094dcecaec"
29+
ODEInterfaceDiffEq = "09606e27-ecf5-54fc-bb29-004bd9f985bf"
2730
ODEProblemLibrary = "fdc4e326-1af4-4b90-96e7-779fcce2daa5"
2831
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
2932
OptimizationNLopt = "4e6fcdb7-1186-4e1f-a706-475e75c168bb"
@@ -35,6 +38,7 @@ RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
3538
SDEProblemLibrary = "c72e72a9-a271-4b2b-8966-303ed956772e"
3639
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
3740
SciMLOperators = "c0aeaf25-5076-4817-a8d5-81caf7dfa961"
41+
SimpleDiffEq = "05bca326-078c-5bf0-a5bf-ce7c7982d7fd"
3842
SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5"
3943
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
4044
SteadyStateDiffEq = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f"
@@ -56,6 +60,7 @@ CSV = "0.10"
5660
ComponentArrays = "0.15"
5761
DAEProblemLibrary = "0.1"
5862
DASKR = "2.9.1"
63+
DASSL = "2"
5964
DDEProblemLibrary = "0.1"
6065
DataFrames = "1.4"
6166
DelayDiffEq = "5.52"
@@ -68,8 +73,10 @@ FiniteDiff = "2"
6873
ForwardDiff = "0.10, 1"
6974
IncompleteLU = "0.2"
7075
JLD2 = "0.4, 0.5.1, 0.6"
76+
LSODA = "0.7"
7177
ModelingToolkit = "9, 10, 11.0"
7278
NonlinearSolve = "3.15, 4"
79+
ODEInterfaceDiffEq = "3"
7380
ODEProblemLibrary = "0.1, 1"
7481
Optimization = "3, 4, 5"
7582
OptimizationNLopt = "0.2, 0.3"
@@ -81,6 +88,7 @@ RecursiveArrayTools = "3"
8188
SDEProblemLibrary = "0.1, 1"
8289
SciMLBase = "2.81.0"
8390
SciMLOperators = "0.3, 0.4, 1"
91+
SimpleDiffEq = "1"
8492
SparseConnectivityTracer = "0.6, 1"
8593
StaticArrays = "1"
8694
SteadyStateDiffEq = "2.4"

docs/make.jl

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
using Documenter, DiffEqBase, SciMLBase, OrdinaryDiffEq, OrdinaryDiffEqBDF,
2-
OrdinaryDiffEqCore, StochasticDiffEq, DelayDiffEq, SteadyStateDiffEq, DiffEqCallbacks
2+
OrdinaryDiffEqCore, StochasticDiffEq, DelayDiffEq, SteadyStateDiffEq, DiffEqCallbacks,
3+
BoundaryValueDiffEq
34
import ODEProblemLibrary,
45
SDEProblemLibrary, DDEProblemLibrary, DAEProblemLibrary, BVProblemLibrary
5-
using Sundials, DASKR
6+
using Sundials, DASKR, LSODA, DASSL, SimpleDiffEq, ODEInterfaceDiffEq
67

78
# Use development versions for API documentation
89
import Pkg
@@ -98,7 +99,13 @@ makedocs(
9899
DelayDiffEq,
99100
SteadyStateDiffEq,
100101
DiffEqCallbacks,
101-
Sundials, DASKR,
102+
BoundaryValueDiffEq,
103+
Sundials,
104+
DASKR,
105+
LSODA,
106+
DASSL,
107+
SimpleDiffEq,
108+
ODEInterfaceDiffEq,
102109
],
103110
remotes = nothing,
104111
linkcheck = true,

docs/pages.jl

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,21 @@ pages = Any[
135135
"features/low_dep.md",
136136
"features/progress_bar.md",
137137
],
138-
"External Solver APIs" => Any[
139-
"api/sundials.md",
140-
"api/daskr.md",
138+
"Solver Package APIs" => Any[
139+
"Native Julia Solvers" => Any[
140+
"api/delaydiffeq.md",
141+
"api/steadystatediffeq.md",
142+
"api/boundaryvaluediffeq.md",
143+
"api/diffeqcallbacks.md",
144+
"api/simplediffeq.md",
145+
"api/dassl.md",
146+
],
147+
"External Wrappers" => Any[
148+
"api/sundials.md",
149+
"api/daskr.md",
150+
"api/lsoda.md",
151+
"api/odeinterfacediffeq.md",
152+
],
141153
],
142154
"OrdinaryDiffEq.jl API" => ordinary_diffeq_pages,
143155
"StochasticDiffEq.jl API" => stochastic_diffeq_pages,
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# [BoundaryValueDiffEq.jl](@id boundaryvaluediffeq_api)
2+
3+
BoundaryValueDiffEq.jl is the native Julia package for solving boundary value problems
4+
(BVPs) within the SciML ecosystem. It provides shooting methods, MIRK collocation methods,
5+
FIRK methods, and more.
6+
7+
## Installation
8+
9+
BoundaryValueDiffEq.jl is included with DifferentialEquations.jl. To use it standalone:
10+
11+
```julia
12+
using Pkg
13+
Pkg.add("BoundaryValueDiffEq")
14+
import BoundaryValueDiffEq
15+
```
16+
17+
## Shooting Method APIs
18+
19+
```@docs
20+
BoundaryValueDiffEq.Shooting
21+
BoundaryValueDiffEq.MultipleShooting
22+
```
23+
24+
## MIRK Method APIs
25+
26+
```@docs
27+
BoundaryValueDiffEq.MIRK2
28+
BoundaryValueDiffEq.MIRK3
29+
BoundaryValueDiffEq.MIRK4
30+
BoundaryValueDiffEq.MIRK5
31+
BoundaryValueDiffEq.MIRK6
32+
```
33+
34+
## FIRK Method APIs (Lobatto)
35+
36+
```@docs
37+
BoundaryValueDiffEq.LobattoIIIa2
38+
BoundaryValueDiffEq.LobattoIIIa3
39+
BoundaryValueDiffEq.LobattoIIIa4
40+
BoundaryValueDiffEq.LobattoIIIa5
41+
BoundaryValueDiffEq.LobattoIIIb2
42+
BoundaryValueDiffEq.LobattoIIIb3
43+
BoundaryValueDiffEq.LobattoIIIb4
44+
BoundaryValueDiffEq.LobattoIIIb5
45+
BoundaryValueDiffEq.LobattoIIIc2
46+
BoundaryValueDiffEq.LobattoIIIc3
47+
BoundaryValueDiffEq.LobattoIIIc4
48+
BoundaryValueDiffEq.LobattoIIIc5
49+
```
50+
51+
## FIRK Method APIs (Radau)
52+
53+
```@docs
54+
BoundaryValueDiffEq.RadauIIa1
55+
BoundaryValueDiffEq.RadauIIa2
56+
BoundaryValueDiffEq.RadauIIa3
57+
BoundaryValueDiffEq.RadauIIa5
58+
BoundaryValueDiffEq.RadauIIa7
59+
```
60+
61+
## Ascher Collocation Method APIs
62+
63+
```@docs
64+
BoundaryValueDiffEq.Ascher1
65+
BoundaryValueDiffEq.Ascher2
66+
BoundaryValueDiffEq.Ascher3
67+
BoundaryValueDiffEq.Ascher4
68+
BoundaryValueDiffEq.Ascher5
69+
BoundaryValueDiffEq.Ascher6
70+
BoundaryValueDiffEq.Ascher7
71+
```
72+
73+
## MIRKN Method APIs
74+
75+
```@docs
76+
BoundaryValueDiffEq.MIRKN4
77+
BoundaryValueDiffEq.MIRKN6
78+
```

docs/src/api/dassl.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# [DASSL.jl](@id dassl_api)
2+
3+
DASSL.jl is a native Julia implementation of the DASSL algorithm for solving
4+
differential-algebraic equations (DAEs) within the SciML interface.
5+
6+
Note that this package is not automatically included with DifferentialEquations.jl.
7+
To use the following algorithms, you must install and use DASSL.jl:
8+
9+
```julia
10+
using Pkg
11+
Pkg.add("DASSL")
12+
import DASSL
13+
```
14+
15+
These methods can be used independently of the rest of DifferentialEquations.jl.
16+
17+
## DAE Solvers
18+
19+
The following DAE solver is available:
20+
21+
- ``dassl`` - A native Julia implementation of the DASSL algorithm. This is an
22+
adaptive-order, adaptive-stepsize backward differentiation formula (BDF)
23+
method for solving stiff systems of differential-algebraic equations.
24+
25+
### Example Usage
26+
27+
```julia
28+
using DASSL, DiffEqBase
29+
30+
# Define the residual function for the DAE
31+
function f!(res, du, u, p, t)
32+
res[1] = du[1] - u[2]
33+
res[2] = u[1] + u[2] - 1.0
34+
end
35+
36+
# Initial conditions
37+
u0 = [1.0, 0.0]
38+
du0 = [0.0, 1.0]
39+
tspan = (0.0, 10.0)
40+
41+
# Create and solve the problem
42+
prob = DAEProblem(f!, du0, u0, tspan)
43+
sol = solve(prob, dassl())
44+
```

docs/src/api/delaydiffeq.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# [DelayDiffEq.jl](@id delaydiffeq_api)
2+
3+
DelayDiffEq.jl is the native Julia package for solving delay differential equations
4+
(DDEs) within the SciML ecosystem. It provides methods for constant and state-dependent
5+
delays using the method of steps.
6+
7+
## Installation
8+
9+
DelayDiffEq.jl is included with DifferentialEquations.jl. To use it standalone:
10+
11+
```julia
12+
using Pkg
13+
Pkg.add("DelayDiffEq")
14+
import DelayDiffEq
15+
```
16+
17+
## DDE Solver API
18+
19+
```@docs
20+
DelayDiffEq.MethodOfSteps
21+
```

docs/src/api/diffeqcallbacks.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# [DiffEqCallbacks.jl](@id diffeqcallbacks_api)
2+
3+
DiffEqCallbacks.jl provides a library of pre-built callbacks for use with the
4+
SciML differential equation solvers. These include saving callbacks, manifold
5+
projection, domain constraints, and more.
6+
7+
## Installation
8+
9+
DiffEqCallbacks.jl is included with DifferentialEquations.jl. To use it standalone:
10+
11+
```julia
12+
using Pkg
13+
Pkg.add("DiffEqCallbacks")
14+
import DiffEqCallbacks
15+
```
16+
17+
## Callback APIs
18+
19+
### Manifold Projection Callbacks
20+
21+
```@docs
22+
DiffEqCallbacks.ManifoldProjection
23+
```
24+
25+
### Saving Callbacks
26+
27+
```@docs
28+
DiffEqCallbacks.SavingCallback
29+
DiffEqCallbacks.SavedValues
30+
```
31+
32+
### Domain Callbacks
33+
34+
```@docs
35+
DiffEqCallbacks.PositiveDomain
36+
DiffEqCallbacks.GeneralDomain
37+
```
38+
39+
### Stepping Callbacks
40+
41+
```@docs
42+
DiffEqCallbacks.StepsizeLimiter
43+
DiffEqCallbacks.FunctionCallingCallback
44+
```
45+
46+
### Termination Callbacks
47+
48+
```@docs
49+
DiffEqCallbacks.TerminateSteadyState
50+
```
51+
52+
### Iterative Callbacks
53+
54+
```@docs
55+
DiffEqCallbacks.IterativeCallback
56+
DiffEqCallbacks.PeriodicCallback
57+
```
58+
59+
### Preset Time Callbacks
60+
61+
```@docs
62+
DiffEqCallbacks.PresetTimeCallback
63+
```
64+
65+
### AutoAbstol
66+
67+
```@docs
68+
DiffEqCallbacks.AutoAbstol
69+
```

docs/src/api/lsoda.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# [LSODA.jl](@id lsoda_api)
2+
3+
LSODA.jl is a wrapper package that provides access to the LSODA algorithm within
4+
the SciML interface. LSODA is a well-known method which uses automatic switching
5+
to solve both stiff and non-stiff equations.
6+
7+
Note that this package is not automatically included with DifferentialEquations.jl.
8+
To use the following algorithms, you must install and use LSODA.jl:
9+
10+
```julia
11+
using Pkg
12+
Pkg.add("LSODA")
13+
import LSODA
14+
```
15+
16+
These methods can be used independently of the rest of DifferentialEquations.jl.
17+
18+
## ODE Solver APIs
19+
20+
```@docs
21+
LSODA.lsoda
22+
```

docs/src/api/odeinterfacediffeq.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# [ODEInterfaceDiffEq.jl](@id odeinterfacediffeq_api)
2+
3+
ODEInterfaceDiffEq.jl provides a wrapper for classic Fortran ODE solvers from
4+
the ODEInterface.jl package into the SciML interface. These include the Hairer
5+
and Wanner solvers.
6+
7+
Note that this package is not automatically included with DifferentialEquations.jl.
8+
To use the following algorithms, you must install and use ODEInterfaceDiffEq.jl:
9+
10+
```julia
11+
using Pkg
12+
Pkg.add("ODEInterfaceDiffEq")
13+
import ODEInterfaceDiffEq
14+
```
15+
16+
These methods can be used independently of the rest of DifferentialEquations.jl.
17+
18+
## ODE Solver APIs
19+
20+
```@docs
21+
ODEInterfaceDiffEq.dopri5
22+
ODEInterfaceDiffEq.dop853
23+
ODEInterfaceDiffEq.odex
24+
ODEInterfaceDiffEq.seulex
25+
ODEInterfaceDiffEq.radau
26+
ODEInterfaceDiffEq.radau5
27+
ODEInterfaceDiffEq.rodas
28+
ODEInterfaceDiffEq.ddeabm
29+
ODEInterfaceDiffEq.ddebdf
30+
```
31+
32+
## BVP Solver APIs
33+
34+
```@docs
35+
ODEInterfaceDiffEq.BVPM2
36+
ODEInterfaceDiffEq.BVPSOL
37+
ODEInterfaceDiffEq.COLNEW
38+
```

0 commit comments

Comments
 (0)