Skip to content

Commit 8ed32d3

Browse files
Merge pull request #633 from ArnoStrouwen/LT
[skip ci] LanguageTool2
2 parents da43555 + a9e413d commit 8ed32d3

14 files changed

+147
-144
lines changed

docs/src/solvers/benchmarks.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@ Benchmarks for the solvers can be found at
44
[benchmarks.sciml.ai](https://docs.sciml.ai/SciMLBenchmarksOutput/stable/).
55
The source code can be found at
66
[SciMLBenchmarks.jl](https://github.com/SciML/SciMLBenchmarks.jl).
7-
Many different problems are tested. However, if you would like additional problems to be benchmarked,
8-
please open an issue or PR at the SciMLBenchmarks.jl repository with the code that defines the DEProblem.
7+
A variety of different problems are already tested.
8+
However, if you would like additional problems to be benchmarked,
9+
please open an issue or PR at the SciMLBenchmarks.jl repository
10+
with the code that defines the DEProblem.

docs/src/solvers/bvp_solve.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# BVP Solvers
22

3-
## Recomended Methods
3+
## Recommended Methods
44

5-
`GeneralMIRK4` is a good well-rounded method when the problem is not too large.
5+
`GeneralMIRK4` is a well-rounded method when the problem is not too large.
66
It uses highly stable trust region methods to solve a 4th order fully
77
implicit Runge-Kutta scheme. As an alternative on general `BVProblem`s, the
88
`Shooting` method paired with an appropriate integrator for the IVP, such as
9-
`Shooting(Tsit5())`, is a flexible and efficient option. This will allow one
9+
`Shooting(Tsit5())`, is a flexible and efficient option. This allows one
1010
to combine callbacks/event handling with the BVP solver, and the high order
1111
interpolations can be used to define complex boundary conditions. However,
1212
`Shooting` methods can in some cases be prone to sensitivity of the boundary
@@ -22,6 +22,6 @@ improve the efficiency.
2222

2323
- `Shooting` - A wrapper over initial value problem solvers.
2424
- `GeneralMIRK4` - A 4th order collocation method using an implicit Runge-Kutta
25-
tableau solved using a trust region dogleg method from NLsolve.jl.
25+
tableau, solved using a trust region dogleg method from NLsolve.jl.
2626
- `MIRK4` - A 4th order collocation method using an implicit Runge-Kutta tableau
2727
with a sparse Jacobian. Compatible only with two-point boundary value problems.

docs/src/solvers/dae_solve.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Recommended Methods
44

5-
For medium to low accuracy small numbers of DAEs in constant mass matrices form,
5+
For medium to low accuracy small numbers of DAEs in constant mass matrix form,
66
the `Rosenbrock23` and `Rodas4` methods are good choices which will get good
77
efficiency if the mass matrix is constant. `Rosenbrock23` is better for low
88
accuracy (error tolerance `<1e-4`) and `Rodas4` is better for high accuracy.
@@ -24,10 +24,10 @@ but still needs more optimizations.
2424
For all OrdinaryDiffEq.jl methods, an initialization scheme can be set with a
2525
common keyword argument `initializealg`. The choices are:
2626

27-
- `BrownFullBasicInit`: For Index-1 DAEs implicit DAEs and and semi-explicit
27+
- `BrownFullBasicInit`: For Index-1 DAEs implicit DAEs and semi-explicit
2828
DAEs in mass matrix form. Keeps the differential variables constant. Requires
2929
`du0` when used on a `DAEProblem`.
30-
- `ShampineCollocationInit`: For Index-1 DAEs implicit DAEs and and semi-explicit
30+
- `ShampineCollocationInit`: For Index-1 DAEs implicit DAEs and semi-explicit
3131
DAEs in mass matrix form. Changes both the differential and algebraic variables.
3232
- `NoInit`: Explicitly opts-out of DAE initialization.
3333

@@ -48,8 +48,8 @@ extra options for the solvers, see the ODE solver page.
4848
!!! note
4949

5050
The standard Hermite interpolation used for ODE methods in OrdinaryDiffEq.jl
51-
is not applicable to the algebraic variables. Thus for the following mass-matrix
52-
methods, use the interplation (thus `saveat`) with caution if the default
51+
is not applicable to the algebraic variables. Thus, for the following mass-matrix
52+
methods, use the interpolation (thus `saveat`) with caution if the default
5353
Hermite interpolation is used. All methods which mention a specialized interpolation
5454
(and implicit ODE methods) are safe.
5555

@@ -85,7 +85,7 @@ extra options for the solvers, see the ODE solver page.
8585
#### Rosenbrock-W Methods
8686

8787
- `Rosenbrock23` - An Order 2/3 L-Stable Rosenbrock-W method which is good for very stiff equations with oscillations at low tolerances. 2nd order stiff-aware interpolation.
88-
- `Rosenbrock32` - An Order 3/2 A-Stable Rosenbrock-W method which is good for mildy stiff equations without oscillations at low tolerances. Note that this method is prone to instability in the presence of oscillations, so use with caution. 2nd order stiff-aware interpolation.
88+
- `Rosenbrock32` - An Order 3/2 A-Stable Rosenbrock-W method which is good for mildly stiff equations without oscillations at low tolerances. Note that this method is prone to instability in the presence of oscillations, so use with caution. 2nd order stiff-aware interpolation.
8989
- `RosenbrockW6S4OS` - A 4th order L-stable Rosenbrock-W method (fixed step only).
9090
- `ROS34PW1a` - A 4th order L-stable Rosenbrock-W method.
9191
- `ROS34PW1b` - A 4th order L-stable Rosenbrock-W method.

docs/src/solvers/dde_solve.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ that one uses `MethodOfSteps(Vern6())`. Benchmarks show that going to higher ord
2828

2929
### Stiff DDEs and Differential-Algebraic Delay Equations (DADEs)
3030

31-
For stiff DDEs, the SDIRK and Rosenbrock methods are very efficient as they will
31+
For stiff DDEs, the SDIRK and Rosenbrock methods are very efficient, as they will
3232
reuse the Jacobian in the unconstrained stepping iterations. One should choose
3333
from the methods which have stiff-aware interpolants for better stability.
3434
`MethodOfSteps(Rosenbrock23())` is a good low order method choice. Additionally,
@@ -75,6 +75,6 @@ keyword arguments `abstol` and `reltol` when solving the DDE problem, and increa
7575
the maximal number of iterations by specifying the keyword argument `max_iter` in
7676
the `MethodOfSteps` algorithm, can help ensure that the steps are correct. If the problem
7777
still is not correctly converging, one should lower `dtmax`. For problems with only
78-
constant delays, in the worst case scenario, one may need to set `constrained = true` which
78+
constant delays, in the worst-case scenario, one may need to set `constrained = true` which
7979
will constrain timesteps to at most the size of the minimal lag and hence forces more
8080
stability at the cost of smaller timesteps.

docs/src/solvers/discrete_solve.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ to solve function maps, along with everything else like plot recipes, while
1515
completely ignoring the ODE functionality related to continuous equations (except
1616
for a tiny bit of initialization). However, the `SimpleFunctionMap` from SimpleDiffEq.jl
1717
can be more efficient if the mapping function is sufficiently cheap, but it doesn't have
18-
all of the extras like callbacks and saving support (but does have an integrator interface).
18+
all the extras like callbacks and saving support (but does have an integrator interface).
1919

2020
## Full List of Methods
2121

@@ -24,7 +24,7 @@ all of the extras like callbacks and saving support (but does have an integrator
2424
- `FunctionMap`: A basic function map which implements the full common interface.
2525

2626
OrdinaryDiffEq.jl also contains the `FunctionMap` algorithm which lets you
27-
It has a piecewise constant interpolation and allows for all of the
27+
It has a piecewise constant interpolation and allows for all the
2828
callback/event handling capabilities (of course, with `rootfind=false`. If a
2929
`ContinuousCallback` is given, it's always assumed `rootfind=false`).
3030

@@ -49,10 +49,10 @@ u_{n+1} = u_n + dtf(t_{n+1},u_n).
4949
```
5050

5151
Notice that this is the same as updates from the Euler method, except in this
52-
case we assume that its a discrete change and thus the interpolation is
52+
case we assume that it's a discrete change and thus the interpolation is
5353
piecewise constant.
5454

5555
### SimpleDiffEq.jl
5656

57-
- `SimpleFunctionMap`: A barebones implementation of a function map. Is optimally-efficient
57+
- `SimpleFunctionMap`: A bare-bones implementation of a function map. Is optimally-efficient
5858
and has an integrator interface version, but does not support callbacks or saving controls.

docs/src/solvers/dynamical_solve.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ The functions should be specified as `f1(dv,v,u,p,t)` and `f2(du,v,u,p,t)`
2222
specified by the solver), and `f2` is independent of `t` and `u`. This includes
2323
discretizations arising from `SecondOrderODEProblem`s where the velocity is not
2424
used in the acceleration function, and Hamiltonians where the potential is
25-
(or can be) time-dependent but the kinetic energy is only dependent on `v`.
25+
(or can be) time-dependent, but the kinetic energy is only dependent on `v`.
2626

2727
Note that some methods assume that the integral of `f2` is a quadratic form. That
2828
means that `f2=v'*M*v`, i.e. ``\int f_2 = \frac{1}{2} m v^2``, giving `du = v`. This is
@@ -33,10 +33,10 @@ kinetic energy".
3333

3434
## Recommendations
3535

36-
When energy conservation is required, use a symplectic method. Otherwise the
36+
When energy conservation is required, use a symplectic method. Otherwise, the
3737
Runge-Kutta-Nyström methods will be more efficient. Energy is mostly conserved
38-
by Runge-Kutta-Nyström methods, but is not conserved for long time integrations.
39-
Thus it is suggested that for shorter integrations you use Runge-Kutta-Nyström
38+
by Runge-Kutta-Nyström methods, but is not conserved for long-time integrations.
39+
Thus, it is suggested that for shorter integrations you use Runge-Kutta-Nyström
4040
methods as well.
4141

4242
As a go-to method for efficiency, `DPRKN6` is a good choice. `DPRKN12` is a good
@@ -50,9 +50,9 @@ can be a good choice as it minimizes the number of evaluations.
5050
For symplectic methods, higher order algorithms are the most efficient when higher
5151
accuracy is needed, and when less accuracy is needed lower order methods do better.
5252
Optimized efficiency methods take more steps and thus have more force calculations
53-
for the same order, but have smaller error. Thus the "optimized efficiency"
53+
for the same order, but have smaller error. Thus, the optimized efficiency
5454
algorithms are recommended if your force calculation is not too sufficiency large,
55-
while the other methods are recommend when force calculations are really large
55+
while the other methods are recommended when force calculations are really large
5656
(for example, like in MD simulations `VelocityVerlet` is very popular since it only
5757
requires one force calculation per timestep). A good go-to method would be `McAte5`,
5858
and a good high order choice is `KahanLi8`.
@@ -67,7 +67,7 @@ page for more details.
6767

6868
Unless otherwise specified, the OrdinaryDiffEq algorithms all come with a
6969
3rd order Hermite polynomial interpolation. The algorithms denoted as having a
70-
"free" interpolation means that no extra steps are required for the
70+
free interpolation means that no extra steps are required for the
7171
interpolation. For the non-free higher order interpolating functions, the extra
7272
steps are computed lazily (i.e. not during the solve).
7373

@@ -79,10 +79,10 @@ steps are computed lazily (i.e. not during the solve).
7979
timestep only.
8080
- `IRKN4`: 4th order explicit two-step Runge-Kutta-Nyström method. Can be more
8181
efficient for smooth problems. Fixed timestep only.
82-
- `ERKN4`: 4th order Runge-Kutta-Nyström method which is integrates the periodic
82+
- `ERKN4`: 4th order Runge-Kutta-Nyström method which integrates the periodic
8383
properties of the harmonic oscillator exactly. Gets extra efficiency on periodic
8484
problems.
85-
- `ERKN5`: 5th order Runge-Kutta-Nyström method which is integrates the periodic
85+
- `ERKN5`: 5th order Runge-Kutta-Nyström method which integrates the periodic
8686
properties of the harmonic oscillator exactly. Gets extra efficiency on periodic
8787
problems.
8888
- `Nystrom4VelocityIndependent`: 4th order explicit Runge-Kutta-Nyström method.
@@ -112,7 +112,7 @@ Note that all symplectic integrators are fixed timestep only.
112112
- `CalvoSanz4`: Optimized efficiency 4th order explicit symplectic integrator.
113113
- `McAte42`: 4th order explicit symplectic integrator. (Broken)
114114
- `McAte5`: Optimized efficiency 5th order explicit symplectic integrator.
115-
Requires quadratic kinetic energy
115+
Requires quadratic kinetic energy.
116116
- `Yoshida6`: 6th order explicit symplectic integrator.
117117
- `KahanLi6`: Optimized efficiency 6th order explicit symplectic integrator.
118118
- `McAte8`: 8th order explicit symplectic integrator.

docs/src/solvers/nonautonomous_linear_ode.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ is for solvers to require state-independent operators, which implies the form:
1414
u^\prime = A(t)u
1515
```
1616

17-
Another type of solvers are needed when the operators are state-dependent, i.e.
17+
Another type of solver is needed when the operators are state-dependent, i.e.
1818

1919
```math
2020
u^\prime = A(u)u
@@ -42,7 +42,7 @@ page for more details.
4242

4343
Unless otherwise specified, the OrdinaryDiffEq algorithms all come with a
4444
3rd order Hermite polynomial interpolation. The algorithms denoted as having a
45-
"free" interpolation means that no extra steps are required for the
45+
free interpolation means that no extra steps are required for the
4646
interpolation. For the non-free higher order interpolating functions, the extra
4747
steps are computed lazily (i.e. not during the solve).
4848

@@ -61,10 +61,10 @@ Options:
6161
defined for the operator `A`.
6262
- :simple - uses simple Krylov approximations with fixed subspace size `m`.
6363
- :adaptive - uses adaptive Krylov approximations with internal timestepping.
64-
- `m` - integer, default: `30`. Controls the size of Krylov subsapce if
64+
- `m` - integer, default: `30`. Controls the size of Krylov subspace if
6565
`krylov=:simple`, and the initial subspace size if `krylov=:adaptive`.
6666
- `iop` - integer, default: `0`. If not zero, determines the length of the incomplete
67-
orthogonalization procedure (IOP) [^1]. Note that if the linear operator/jacobian is hermitian,
67+
orthogonalization procedure (IOP) [^1]. Note that if the linear operator/Jacobian is hermitian,
6868
then the Lanczos algorithm will always be used and the IOP setting is ignored.
6969

7070
```@example linear_ode
@@ -78,10 +78,10 @@ sol = solve(prob, LinearExponential())
7878
!!! note
7979

8080
LinearExponential is exact, and thus it uses `dt=tspan[2]-tspan[1]` by default. The interpolation
81-
used is inexact (3rd order Hermite). Thus values generated by the interpolation (via `sol(t)` or
81+
used is inexact (3rd order Hermite). Thus, values generated by the interpolation (via `sol(t)` or
8282
`saveat`) will be inexact with increasing error as the size of the time span grows. To counteract
83-
this, directly set `dt` or use `tstops` instead of of `saveat`. For more information, see
84-
[this issue](https://github.com/SciML/OrdinaryDiffEq.jl/issues/1491)
83+
this, directly set `dt` or use `tstops` instead of `saveat`. For more information, see
84+
[this issue](https://github.com/SciML/OrdinaryDiffEq.jl/issues/1491).
8585

8686
### State-Independent Solvers
8787

@@ -110,7 +110,7 @@ prob = ODEProblem(A, ones(2), (1.0, 6.0))
110110
sol = solve(prob,MagnusGL6(),dt=1/10)
111111
```
112112

113-
The initial values for ``A`` are irrelevant in this and similar cases as the `update_func` immediately overwrites them.
113+
The initial values for ``A`` are irrelevant in this and similar cases, as the `update_func` immediately overwrites them.
114114
Starting with `ones(2,2)` is just a convenient way to get a mutable 2x2 matrix.
115115

116116

0 commit comments

Comments
 (0)