Split ODE Solvers

# Split ODE Solvers

The solvers which are available for a SplitODEProblem depend on the input linearity and number of components. Each solver has functional form (or many) that it allows.

## Implicit-Explicit (IMEX) ODE

The Implicit-Explicit (IMEX) ODE is a SplitODEProblem with two functions:

$\frac{du}{dt} = f_1(t,u) + f_2(t,u)$

where the first function is the stiff part and the second function is the non-stiff part (implicit integration on f1, explicit integration on f2).

### Recommended Methods

The recommended method in most cases is KenCarp4. In cases of extreme stiffness or for high tolerances, KenCarp3 can be a good choice. The ARKODE methods are generally inefficient and diverge unless the options are tweaked to match the problem, though for large enough PDEs the ARKODE method with linear_solver=:GMRES is a good choice.

### OrdinaryDiffEq.jl

• SplitEuler: 1st order fully explicit method. Used for testing accuracy of splits.

• KenCarp3: An A-L stable stiffly-accurate 3rd order ESDIRK method

• KenCarp4: An A-L stable stiffly-accurate 4rd order ESDIRK method

• KenCarp5: An A-L stable stiffly-accurate 5rd order ESDIRK method

### Sundials.jl

• ARKODE: An additive Runge-Kutta method. Order between 3rd and 5th. For a list of available options, please see its ODE solver page

## Semilinear ODE

The Semilinear ODE is a split ODEProblem with one linear operator and one function:

$\frac{du}{dt} = Au + f(t,u)$

where the first function is a constant (not time dependent)AbstractDiffEqOperator and the second part is a (nonlinear) function. ../../features/diffeq_operator.html.

The appropriate algorithms for this form are:

### OrdinaryDiffEq.jl

These methods utilize caching of the exponential operators and are thus are faster than Krylov-based methods but are only suited for smaller systems where expm(dt*A) can fit in memory.

• GenericIIF1 - First order Implicit Integrating Factor method. Fixed timestepping only.

• GenericIIF2 - Second order Implicit Integrating Factor method. Fixed timestepping only.

• ETD1 - First order Exponential Time Differencing method. Not yet implemented.

• ETD2 - Second order Exponential Time Differencing method. Not yet implemented.

• LawsonEuler - First order exponential Euler scheme. Fixed timestepping only.

• NorsettEuler - First order exponential-RK scheme. Fixed timestepping only.

• ETDRK4 - 4th order exponential-RK scheme. Fixed timestepping only.

Note that the generic algorithms allow for a choice of nlsolve.

Additional Krylov-based methods which allow for lazy calculation of expm(dt*A)*v are in development.