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.LawsonEulerType
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=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.

source
OrdinaryDiffEqExponentialRK.NorsettEulerType
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=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.

source
OrdinaryDiffEqExponentialRK.ETDRK2Type
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=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.

source
OrdinaryDiffEqExponentialRK.ETDRK3Type
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=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.

source
OrdinaryDiffEqExponentialRK.ETDRK4Type
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=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.

source
OrdinaryDiffEqExponentialRK.HochOst4Type
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=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.

source