Skip to content

Commit 0f6931d

Browse files
authored
Merge branch 'master' into wtransform
2 parents 34750c3 + 52eca77 commit 0f6931d

File tree

240 files changed

+7807
-5388
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

240 files changed

+7807
-5388
lines changed

.github/workflows/CompatHelper.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@ jobs:
2323
- name: CompatHelper.main()
2424
env:
2525
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26-
run: julia -e 'using CompatHelper; CompatHelper.main(;subdirs=["", "docs", "test/down", "diagrams"])'
26+
run: julia -e 'using CompatHelper; CompatHelper.main(;subdirs=["", "docs", "test/downstream"])'

Project.toml

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "OrdinaryDiffEq"
22
uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
33
authors = ["Chris Rackauckas <accounts@chrisrackauckas.com>", "Yingbo Ma <mayingbo5@gmail.com>"]
4-
version = "6.87.0"
4+
version = "6.89.0"
55

66
[deps]
77
ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
@@ -79,7 +79,7 @@ ADTypes = "0.2, 1"
7979
Adapt = "3.0, 4"
8080
ArrayInterface = "7"
8181
DataStructures = "0.18"
82-
DiffEqBase = "6.147"
82+
DiffEqBase = "6.154"
8383
DocStringExtensions = "0.9"
8484
EnumX = "1"
8585
ExponentialUtilities = "1"
@@ -97,14 +97,43 @@ Logging = "1.9"
9797
MacroTools = "0.5"
9898
MuladdMacro = "0.2.1"
9999
NonlinearSolve = "3"
100+
OrdinaryDiffEqAdamsBashforthMoulton = "1"
101+
OrdinaryDiffEqBDF = "1"
100102
OrdinaryDiffEqCore = "1"
103+
OrdinaryDiffEqDefault = "1"
104+
OrdinaryDiffEqDifferentiation = "1"
105+
OrdinaryDiffEqExplicitRK = "1"
106+
OrdinaryDiffEqExponentialRK = "1"
107+
OrdinaryDiffEqExtrapolation = "1"
108+
OrdinaryDiffEqFIRK = "1"
109+
OrdinaryDiffEqFeagin = "1"
110+
OrdinaryDiffEqFunctionMap = "1"
111+
OrdinaryDiffEqHighOrderRK = "1"
112+
OrdinaryDiffEqIMEXMultistep = "1"
113+
OrdinaryDiffEqLinear = "1"
114+
OrdinaryDiffEqLowOrderRK = "1"
115+
OrdinaryDiffEqLowStorageRK = "1"
116+
OrdinaryDiffEqNonlinearSolve = "1"
117+
OrdinaryDiffEqNordsieck = "1"
118+
OrdinaryDiffEqPDIRK = "1"
119+
OrdinaryDiffEqPRK = "1"
120+
OrdinaryDiffEqQPRK = "1"
121+
OrdinaryDiffEqRKN = "1"
122+
OrdinaryDiffEqRosenbrock = "1"
123+
OrdinaryDiffEqSDIRK = "1"
124+
OrdinaryDiffEqStabilizedIRK = "1"
125+
OrdinaryDiffEqSSPRK = "1"
126+
OrdinaryDiffEqStabilizedRK = "1"
127+
OrdinaryDiffEqSymplecticRK = "1"
128+
OrdinaryDiffEqTsit5 = "1"
129+
OrdinaryDiffEqVerner = "1"
101130
Polyester = "0.7"
102131
PreallocationTools = "0.4"
103132
PrecompileTools = "1"
104133
Preferences = "1.3"
105134
RecursiveArrayTools = "2.36, 3"
106135
Reexport = "1.0"
107-
SciMLBase = "2.27.1"
136+
SciMLBase = "2.53"
108137
SciMLOperators = "0.3"
109138
SciMLStructures = "1"
110139
SimpleNonlinearSolve = "1"

docs/common_first_steps.jl

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using Markdown
2+
function first_steps(name, solver)
3+
Markdown.parse("""## Installation
4+
To be able to access the solvers in `$name`, you must first install them use the Julia package manager:
5+
6+
```julia
7+
using Pkg
8+
Pkg.add("$name")
9+
```
10+
This will only install the solvers listed at the bottom of this page.
11+
If you want to explore other solvers for your problem,
12+
you will need to install some of the other libraries listed in the navigation bar on the left.
13+
14+
## Example usage
15+
16+
```julia
17+
using $name
18+
19+
function lorenz!(du, u, p, t)
20+
du[1] = 10.0 * (u[2] - u[1])
21+
u[2] = u[1] * (28.0 - u[3]) - u[2]
22+
du[3] = u[1] * u[2] - (8 / 3) * u[3]
23+
end
24+
u0 = [1.0; 0.0; 0.0]
25+
tspan = (0.0, 100.0)
26+
prob = ODEProblem(lorenz!, u0, tspan)
27+
sol = solve(prob, $solver())
28+
```""")
29+
end

docs/make.jl

Lines changed: 64 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,54 +8,87 @@ makedocs(sitename = "OrdinaryDiffEq.jl",
88
clean = true,
99
doctest = false,
1010
modules = [OrdinaryDiffEq,
11+
OrdinaryDiffEq.OrdinaryDiffEqAdamsBashforthMoulton,
12+
OrdinaryDiffEq.OrdinaryDiffEqBDF,
13+
OrdinaryDiffEq.OrdinaryDiffEqDefault,
14+
OrdinaryDiffEq.OrdinaryDiffEqExplicitRK,
15+
OrdinaryDiffEq.OrdinaryDiffEqExponentialRK,
1116
OrdinaryDiffEq.OrdinaryDiffEqExtrapolation,
12-
OrdinaryDiffEq.OrdinaryDiffEqStabilizedRK,
13-
OrdinaryDiffEq.OrdinaryDiffEqStabilizedIRK,
14-
OrdinaryDiffEq.OrdinaryDiffEqLowStorageRK,
15-
OrdinaryDiffEq.OrdinaryDiffEqSSPRK,
1617
OrdinaryDiffEq.OrdinaryDiffEqFeagin,
17-
OrdinaryDiffEq.OrdinaryDiffEqSymplecticRK,
18+
OrdinaryDiffEq.OrdinaryDiffEqFIRK,
19+
OrdinaryDiffEq.OrdinaryDiffEqHighOrderRK,
20+
OrdinaryDiffEq.OrdinaryDiffEqIMEXMultistep,
21+
OrdinaryDiffEq.OrdinaryDiffEqLinear,
22+
OrdinaryDiffEq.OrdinaryDiffEqLowOrderRK,
23+
OrdinaryDiffEq.OrdinaryDiffEqLowStorageRK,
24+
OrdinaryDiffEq.OrdinaryDiffEqNordsieck,
25+
OrdinaryDiffEq.OrdinaryDiffEqPDIRK,
26+
OrdinaryDiffEq.OrdinaryDiffEqPRK,
27+
OrdinaryDiffEq.OrdinaryDiffEqQPRK,
1828
OrdinaryDiffEq.OrdinaryDiffEqRKN,
19-
OrdinaryDiffEq.OrdinaryDiffEqVerner,
29+
OrdinaryDiffEq.OrdinaryDiffEqRosenbrock,
2030
OrdinaryDiffEq.OrdinaryDiffEqSDIRK,
21-
OrdinaryDiffEq.OrdinaryDiffEqBDF,
22-
OrdinaryDiffEq.OrdinaryDiffEqDefault,
23-
OrdinaryDiffEq.OrdinaryDiffEqFIRK],
31+
OrdinaryDiffEq.OrdinaryDiffEqSSPRK,
32+
OrdinaryDiffEq.OrdinaryDiffEqStabilizedIRK,
33+
OrdinaryDiffEq.OrdinaryDiffEqStabilizedRK,
34+
OrdinaryDiffEq.OrdinaryDiffEqSymplecticRK,
35+
OrdinaryDiffEq.OrdinaryDiffEqTsit5,
36+
OrdinaryDiffEq.OrdinaryDiffEqVerner
37+
],
2438
warnonly = [:docs_block, :missing_docs, :eval_block],
2539
format = Documenter.HTML(analytics = "UA-90474609-3",
2640
assets = ["assets/favicon.ico"],
27-
canonical = "https://ordinarydiffeq.sciml.ai/stable/"),
41+
canonical = "https://ordinarydiffeq.sciml.ai/stable/",
42+
size_threshold_ignore = [joinpath("semiimplicit", "Rosenbrock.md"),
43+
joinpath("massmatrixdae", "Rosenbrock.md")]),
2844
pages = [
2945
"OrdinaryDiffEq.jl: ODE solvers and utilities" => "index.md",
3046
"Usage" => "usage.md",
31-
"Standard Non-Stiff ODEProblem Solvers" => [
32-
"nonstiff/explicitrk.md",
33-
"nonstiff/lowstorage_ssprk.md",
34-
"nonstiff/explicit_extrapolation.md",
35-
"nonstiff/nonstiff_multistep.md"
47+
"Explicit Solvers" => [
48+
"explicit/Tsit5.md",
49+
"explicit/Verner.md",
50+
"explicit/AdamsBashforthMoulton.md",
51+
"explicit/LowStorageRK.md",
52+
"explicit/SSPRK.md",
53+
"explicit/LowOrderRK.md",
54+
"explicit/HighOrderRK.md",
55+
"explicit/Feagin.md",
56+
"explicit/PRK.md",
57+
"explicit/QPRK.md",
58+
"explicit/Extrapolation.md"
3659
],
37-
"Standard Stiff ODEProblem Solvers" => [
38-
"stiff/firk.md",
39-
"stiff/rosenbrock.md",
40-
"stiff/stabilized_rk.md",
41-
"stiff/sdirk.md",
42-
"stiff/stiff_multistep.md",
43-
"stiff/implicit_extrapolation.md"
60+
"Semi-Implicit Solvers" => [
61+
"semiimplicit/Rosenbrock.md",
62+
"semiimplicit/StabalizedRK.md",
63+
"semiimplicit/ExponentialRK.md"
4464
],
45-
"Second Order and Dynamical ODE Solvers" => [
46-
"dynamical/nystrom.md",
47-
"dynamical/symplectic.md"
65+
"Implicit Solvers" => [
66+
"implicit/SDIRK.md",
67+
"implicit/FIRK.md",
68+
"implicit/BDF.md",
69+
"implicit/Extrapolation.md",
70+
"implicit/PDIRK.md",
71+
"implicit/Nordsieck.md"
4872
],
4973
"IMEX Solvers" => [
50-
"imex/imex_multistep.md",
51-
"imex/imex_sdirk.md"
74+
"imex/IMEXMultistep.md",
75+
"imex/StabalizedIRK.md",
76+
"imex/IMEXBDF.md"
77+
],
78+
"Dynamical ODE Explicit Solvers" => [
79+
"dynamicalodeexplicit/RKN.md",
80+
"dynamicalodeexplicit/SymplecticRK.md"
5281
],
5382
"Semilinear ODE Solvers" => [
54-
"semilinear/exponential_rk.md",
55-
"semilinear/magnus.md"
83+
"semilinear/ExponentialRK.md",
84+
"semilinear/Linear.md"
85+
],
86+
"Mass Matrix DAE Solvers" => [
87+
"massmatrixdae/Rosenbrock.md",
88+
"massmatrixdae/BDF.md"
5689
],
57-
"DAEProblem Solvers" => [
58-
"dae/fully_implicit.md"
90+
"Fully Implicit DAE Solvers" => [
91+
"fullyimplicitdae/BDF.md"
5992
],
6093
"Misc Solvers" => [
6194
"misc.md"

docs/src/dae/fully_implicit.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

docs/src/dynamical/nystrom.md

Lines changed: 0 additions & 18 deletions
This file was deleted.

docs/src/dynamical/symplectic.md

Lines changed: 0 additions & 21 deletions
This file was deleted.

docs/src/dynamicalodeexplicit/RKN.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
```@meta
2+
CollapsedDocStrings = true
3+
```
4+
5+
# OrdinaryDiffEqRKN
6+
7+
Second order solvers.
8+
9+
To be able to access the solvers in `OrdinaryDiffEqRKN`, you must first install them use the Julia package manager:
10+
11+
```julia
12+
using Pkg
13+
Pkg.add("OrdinaryDiffEqRKN")
14+
```
15+
16+
This will only install the solvers listed at the bottom of this page.
17+
If you want to explore other solvers for your problem,
18+
you will need to install some of the other libraries listed in the navigation bar on the left.
19+
20+
## Example usage
21+
22+
```julia
23+
using OrdinaryDiffEqOrdinaryDiffEqRKN
24+
function HH_acceleration!(dv, v, u, p, t)
25+
x, y = u
26+
dx, dy = dv
27+
dv[1] = -x - 2x * y
28+
dv[2] = y^2 - y - x^2
29+
end
30+
initial_positions = [0.0, 0.1]
31+
initial_velocities = [0.5, 0.0]
32+
tspan = (0.0, 1.0)
33+
prob = SecondOrderODEProblem(HH_acceleration!, initial_velocities, initial_positions, tspan)
34+
sol = solve(prob, Nystrom4(), dt = 1 / 10)
35+
```
36+
37+
## Full list of solvers
38+
39+
```@docs
40+
IRKN3
41+
IRKN4
42+
Nystrom4
43+
Nystrom4VelocityIndependent
44+
Nystrom5VelocityIndependent
45+
FineRKN4
46+
FineRKN5
47+
DPRKN4
48+
DPRKN5
49+
DPRKN6
50+
DPRKN6FM
51+
DPRKN8
52+
DPRKN12
53+
ERKN4
54+
ERKN5
55+
ERKN7
56+
RKN4
57+
```
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
```@meta
2+
CollapsedDocStrings = true
3+
```
4+
5+
# OrdinaryDiffEqSymplecticRK
6+
7+
A symplectic integrator is an integrator whose solution resides on a symplectic manifold.
8+
Because of discretization error, when it is solving a Hamiltonian system it doesn't get exactly the correct trajectory on the manifold.
9+
Instead, that trajectory itself is perturbed `O(Δtn)` for the order n from the true trajectory.
10+
Then there's a linear drift due to numerical error of this trajectory over time
11+
Normal integrators tend to have a quadratic (or more) drift, and do not have any good global guarantees about this phase space path (just local).
12+
What means is that symplectic integrators tend to capture the long-time patterns better than normal integrators because of this lack of drift and this almost guarantee of periodicity.
13+
14+
## Installation
15+
16+
To be able to access the solvers in `OrdinaryDiffEqSymplecticRK`, you must first install them use the Julia package manager:
17+
18+
```julia
19+
using Pkg
20+
Pkg.add("OrdinaryDiffEqSymplecticRK")
21+
```
22+
23+
This will only install the solvers listed at the bottom of this page.
24+
If you want to explore other solvers for your problem,
25+
you will need to install some of the other libraries listed in the navigation bar on the left.
26+
27+
## Example usage
28+
29+
```julia
30+
using OrdinaryDiffEqSymplecticRK
31+
function HH_acceleration!(dv, v, u, p, t)
32+
x, y = u
33+
dx, dy = dv
34+
dv[1] = -x - 2x * y
35+
dv[2] = y^2 - y - x^2
36+
end
37+
initial_positions = [0.0, 0.1]
38+
initial_velocities = [0.5, 0.0]
39+
tspan = (0.0, 1.0)
40+
prob = SecondOrderODEProblem(HH_acceleration!, initial_velocities, initial_positions, tspan)
41+
sol = solve(prob, KahanLi8(), dt = 1 / 10)
42+
```
43+
44+
## Full list of solvers
45+
46+
```@docs
47+
SymplecticEuler
48+
VelocityVerlet
49+
VerletLeapfrog
50+
PseudoVerletLeapfrog
51+
McAte2
52+
Ruth3
53+
McAte3
54+
CandyRoz4
55+
McAte4
56+
CalvoSanz4
57+
McAte42
58+
McAte5
59+
Yoshida6
60+
KahanLi6
61+
McAte8
62+
KahanLi8
63+
SofSpa10
64+
```

0 commit comments

Comments
 (0)