OrdinaryDiffEqExponentialRK
Methods for semi-linear differential equations.
Installation
To be able to access the solvers in OrdinaryDiffEqLinear, you must first install them use the Julia package manager:
using Pkg
Pkg.add("OrdinaryDiffEqExponentialRK")This will only install the solvers listed at the bottom of this page. If you want to explore other solvers for your problem, you will need to install some of the other libraries listed in the navigation bar on the left.
Example usage
using OrdinaryDiffEqExponentialRK, SciMLOperators
A = [2.0 -1.0; -1.0 2.0]
linnonlin_f1 = MatrixOperator(A)
linnonlin_f2 = (du, u, p, t) -> du .= 1.01 .* u
linnonlin_fun_iip = SplitFunction(linnonlin_f1, linnonlin_f2)
tspan = (0.0, 1.0)
u0 = [0.1, 0.1]
prob = SplitODEProblem(linnonlin_fun_iip, u0, tspan)
sol = solve(prob, ETDRK4(), dt = 1 / 4)Full list of solvers
OrdinaryDiffEqExponentialRK.LawsonEuler — Type
LawsonEuler(; krylov = false,
m = 30,
iop = 0)Semilinear ODE solver First order exponential Euler scheme (fixed timestepping)
Keyword Arguments
krylov: Determines whether Krylov approximation or operator caching is used, the latter only available for semilinear problems.krylov=trueis much faster for larger systems and is thus recommended whenever there are >100 ODEs.m: Controls the size of Krylov subspace.iop: If not zero, determines the length of the incomplete orthogonalization procedure (IOP). Note that if the linear operator/Jacobian is hermitian, then the Lanczos algorithm will always be used and the IOP setting is ignored.
References
Hochbruck, Marlis, and Alexander Ostermann. “Exponential Integrators.” Acta Numerica 19 (2010): 209–286. doi:10.1017/S0962492910000048.
OrdinaryDiffEqExponentialRK.NorsettEuler — Type
NorsettEuler(; krylov = false,
m = 30,
iop = 0)Semilinear ODE solver First order exponential-RK scheme. Alias: ETD1
Keyword Arguments
krylov: Determines whether Krylov approximation or operator caching is used, the latter only available for semilinear problems.krylov=trueis much faster for larger systems and is thus recommended whenever there are >100 ODEs.m: Controls the size of Krylov subspace.iop: If not zero, determines the length of the incomplete orthogonalization procedure (IOP). Note that if the linear operator/Jacobian is hermitian, then the Lanczos algorithm will always be used and the IOP setting is ignored.
References
Hochbruck, Marlis, and Alexander Ostermann. “Exponential Integrators.” Acta Numerica 19 (2010): 209–286. doi:10.1017/S0962492910000048.
OrdinaryDiffEqExponentialRK.ETD1 — Type
ETD1(;
krylov = false, m = 30, iop = 0, autodiff = AutoForwardDiff(),
concrete_jac = nothing, step_limiter = trivial_limiter!
)ETD1: First Order Exponential Time Differencing (Semilinear ODE Solver)
Alias for NorsettEuler: ETD1 === NorsettEuler. ETD1 is the name this method carries in the exponential time differencing literature, NorsettEuler the name from the exponential-Runge-Kutta literature.
The linear part of a semilinear problem u' = Au + f(u,t) is integrated exactly with the matrix exponential, and the nonlinear part with a first order quadrature.
Method Properties
- Order: 1
- Time stepping: Fixed
- Problem type: Semilinear ODEs (
SplitODEProblem, or a supplied Jacobian)
Keyword Arguments
Identical to NorsettEuler; krylov, m, and iop control whether and how the matrix exponential actions are approximated in a Krylov subspace.
References
- Hochbruck, Marlis, and Alexander Ostermann. "Exponential Integrators." Acta Numerica 19 (2010): 209–286. doi:10.1017/S0962492910000048.
OrdinaryDiffEqExponentialRK.ETD2 — Type
ETD2: Exponential Runge-Kutta Method Second order Exponential Time Differencing method (in development).
OrdinaryDiffEqExponentialRK.ETDRK2 — Type
ETDRK2(; krylov = false,
m = 30,
iop = 0)Semilinear ODE solver 2nd order exponential-RK scheme.
Keyword Arguments
krylov: Determines whether Krylov approximation or operator caching is used, the latter only available for semilinear problems.krylov=trueis much faster for larger systems and is thus recommended whenever there are >100 ODEs.m: Controls the size of Krylov subspace.iop: If not zero, determines the length of the incomplete orthogonalization procedure (IOP). Note that if the linear operator/Jacobian is hermitian, then the Lanczos algorithm will always be used and the IOP setting is ignored.
References
Hochbruck, Marlis, and Alexander Ostermann. “Exponential Integrators.” Acta Numerica 19 (2010): 209–286. doi:10.1017/S0962492910000048.
OrdinaryDiffEqExponentialRK.ETDRK3 — Type
ETDRK3(; krylov = false,
m = 30,
iop = 0)Semilinear ODE solver 3rd order exponential-RK scheme.
Keyword Arguments
krylov: Determines whether Krylov approximation or operator caching is used, the latter only available for semilinear problems.krylov=trueis much faster for larger systems and is thus recommended whenever there are >100 ODEs.m: Controls the size of Krylov subspace.iop: If not zero, determines the length of the incomplete orthogonalization procedure (IOP). Note that if the linear operator/Jacobian is hermitian, then the Lanczos algorithm will always be used and the IOP setting is ignored.
References
Hochbruck, Marlis, and Alexander Ostermann. “Exponential Integrators.” Acta Numerica 19 (2010): 209–286. doi:10.1017/S0962492910000048.
OrdinaryDiffEqExponentialRK.ETDRK4 — Type
ETDRK4(; krylov = false,
m = 30,
iop = 0)Semilinear ODE solver 4th order exponential-RK scheme (fixed timestepping)
Keyword Arguments
krylov: Determines whether Krylov approximation or operator caching is used, the latter only available for semilinear problems.krylov=trueis much faster for larger systems and is thus recommended whenever there are >100 ODEs.m: Controls the size of Krylov subspace.iop: If not zero, determines the length of the incomplete orthogonalization procedure (IOP). Note that if the linear operator/Jacobian is hermitian, then the Lanczos algorithm will always be used and the IOP setting is ignored.
References
Hochbruck, Marlis, and Alexander Ostermann. “Exponential Integrators.” Acta Numerica 19 (2010): 209–286. doi:10.1017/S0962492910000048.
OrdinaryDiffEqExponentialRK.HochOst4 — Type
HochOst4(; krylov = false,
m = 30,
iop = 0)Semilinear ODE solver 4th order exponential-RK scheme with stiff order 4.
Keyword Arguments
krylov: Determines whether Krylov approximation or operator caching is used, the latter only available for semilinear problems.krylov=trueis much faster for larger systems and is thus recommended whenever there are >100 ODEs.m: Controls the size of Krylov subspace.iop: If not zero, determines the length of the incomplete orthogonalization procedure (IOP). Note that if the linear operator/Jacobian is hermitian, then the Lanczos algorithm will always be used and the IOP setting is ignored.
References
Hochbruck, Marlis, and Alexander Ostermann. “Exponential Integrators.” Acta Numerica 19 (2010): 209–286. doi:10.1017/S0962492910000048.