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
— TypeLawsonEuler(; 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=true
is 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
— TypeNorsettEuler(; 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=true
is 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.ETD2
— TypeETD2: Exponential Runge-Kutta Method Second order Exponential Time Differencing method (in development).
OrdinaryDiffEqExponentialRK.ETDRK2
— TypeETDRK2(; 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=true
is 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
— TypeETDRK3(; 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=true
is 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
— TypeETDRK4(; 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=true
is 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
— TypeHochOst4(; 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=true
is 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.