Skip to content

Commit

Permalink
docs Verner
Browse files Browse the repository at this point in the history
  • Loading branch information
ArnoStrouwen committed Aug 11, 2024
1 parent 73b86a7 commit 7f24d16
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 2 deletions.
3 changes: 2 additions & 1 deletion docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ makedocs(sitename = "OrdinaryDiffEq.jl",
"Explicit Solvers" => [
"explicit/Tsit5.md",
"explicit/LowOrderRK.md",
"explicit/HighOrderRK.md"
"explicit/HighOrderRK.md",
"explicit/Verner.md"
],
"ODEProblem Solver Libraries" => [
"Explicit Solvers" =>[
Expand Down
2 changes: 1 addition & 1 deletion docs/src/explicit/HighOrderRK.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# OrdinaryDiffEqHighOrderRK

Solvers for non-stiff problems at low tolerance.
However, the solvers in `OrdinaryDiffEqVerner` are generally perform better at low
However, the solvers in [`OrdinaryDiffEqVerner`](@ref OrdinaryDiffEqVerner) generally perform better at low tolerances.

```@eval
first_steps = evalfile("./common_first_steps.jl")
Expand Down
27 changes: 27 additions & 0 deletions docs/src/explicit/Verner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# [OrdinaryDiffEqVerner](@id OrdinaryDiffEqVerner)

Preferred solvers for non-stiff problems at low tolerance.
`Vern6`, `Vern7`, or `Vern8` are good methods for tolerances between `~1e-8-1e-12`,
and using `Float64` numbers for the state of the differential equation.
For even lower tolerances,`Vern9` should be used, combined with the more precise `BigFloat` number type.

```@eval
first_steps = evalfile("./common_first_steps.jl")
first_steps("OrdinaryDiffEqVerner", "Vern6")
```

## Full list of solvers

```@docs
Vern6
Vern7
Vern8
Vern9
```

```@docs
AutoVern6
AutoVern7
AutoVern8
AutoVern9
```
36 changes: 36 additions & 0 deletions lib/OrdinaryDiffEqVerner/src/algorithms.jl
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,43 @@ function Vern9(stage_limiter!, step_limiter! = trivial_limiter!; lazy = true)
Vern9(stage_limiter!, step_limiter!, False(), lazy)
end

"""
Automatic switching algorithm that can switch between the (non-stiff) `Vern6()` and `stiff_alg`.
AutoVern6(stiff_alg; kwargs...)
This method is equivalent to `AutoAlgSwitch(Vern6(), stiff_alg; kwargs...)`.
To gain access to stiff algorithms you might have to install additional libraries,
such as `OrdinaryDiffEqRosenbrock`.
"""
AutoVern6(alg; lazy = true, kwargs...) = AutoAlgSwitch(Vern6(lazy = lazy), alg; kwargs...)
"""
Automatic switching algorithm that can switch between the (non-stiff) `Vern7()` and `stiff_alg`.
AutoVern7(stiff_alg; kwargs...)
This method is equivalent to `AutoAlgSwitch(Vern7(), stiff_alg; kwargs...)`.
To gain access to stiff algorithms you might have to install additional libraries,
such as `OrdinaryDiffEqRosenbrock`.
"""
AutoVern7(alg; lazy = true, kwargs...) = AutoAlgSwitch(Vern7(lazy = lazy), alg; kwargs...)
"""
Automatic switching algorithm that can switch between the (non-stiff) `Vern8()` and `stiff_alg`.
AutoVern8(stiff_alg; kwargs...)
This method is equivalent to `AutoAlgSwitch(Vern8(), stiff_alg; kwargs...)`.
To gain access to stiff algorithms you might have to install additional libraries,
such as `OrdinaryDiffEqRosenbrock`.
"""
AutoVern8(alg; lazy = true, kwargs...) = AutoAlgSwitch(Vern8(lazy = lazy), alg; kwargs...)
"""
Automatic switching algorithm that can switch between the (non-stiff) `Vern9()` and `stiff_alg`.
AutoVern9(stiff_alg; kwargs...)
This method is equivalent to `AutoAlgSwitch(Vern9(), stiff_alg; kwargs...)`.
To gain access to stiff algorithms you might have to install additional libraries,
such as `OrdinaryDiffEqRosenbrock`.
"""
AutoVern9(alg; lazy = true, kwargs...) = AutoAlgSwitch(Vern9(lazy = lazy), alg; kwargs...)

0 comments on commit 7f24d16

Please sign in to comment.