SciML / OrdinaryDiffEq.jl

High performance ordinary differential equation (ODE) and differential-algebraic equation (DAE) solvers, including neural ordinary differential equations (neural ODEs) and scientific machine learning (SciML)
https://diffeq.sciml.ai/latest/
Other
535 stars 203 forks source link

Full list of exponential integrators to implement #394

Open MSeeker1340 opened 6 years ago

MSeeker1340 commented 6 years ago

Note: many integrators for linear systems also use exponential-like matrix functions and Krylov approximations (Magnus expansion, adiabatic integrators, symplectic exponential methods, etc). Since they require special structure for the intended problems I have opted to not include them in the list below.

Classical ExpRK methods

The classical exponential Runge-Kutta type integrators use the semilinear formulation and can be summarized using the Butcher table (see the Hochbruck review [1]). As such they can be easily constructed for small semilinear systems by precomputing the operators $a_{ij}$ and $b_i$. For systems that do not have a semilinear structure, the exponential Rosenbrock formulation casts each integration step to a semilinear problem using the system's Jacobian.

For large systems, Krylov approximation should be used, which typically use fixed subspace dimension m and does not use internal time-stepping or adaptation. An optimized Krylov implementation should go in the column direction (i.e. use a single Krylov subspace for all terms in a column) and an $s$-stage ExpRK scheme should require at most $s$ Arnoldi iterations.

ETDRK schemes

Oldest of the ExpRK methods, originally constructed to mimic the classical Runge-Kutta methods.

Stiffly accurate methods of Hochbruck

Other methods

Adaptive exponential Rosenbrock methods

Not to be confused with adaptive Krylov methods in EPIRK, these are ExpRK methods that use a lower-order error estimator to perform step size adaptation, much like classical adaptive RK methods.

Exponential multistep methods

ETD schemes

Lawson/generalized integrated factor methods

These methods can be one-step or multistep, depending on the underlying classical method used for the new variable.

EPIRK methods

These methods ditch the semilinear formulation in favor of using the Taylor expansion of the right hand side directly, with the Taylor remainder replacing the nonlinear function used by classical ExpRK methods. Typically they are structured to make full use of the adaptive Krylov methods with internal time-stepping.

References

[1] Hochbruck, M., & Ostermann, A. (2010). Exponential integrators. Acta Numerica, 19, 209-286. (https://doi.org/10.1017/S0962492910000048)

[2] Hochbruck, M., & Ostermann, A. (2005). Explicit exponential Runge--Kutta methods for semilinear parabolic problems. SIAM Journal on Numerical Analysis, 43(3), 1069-1090. (https://doi.org/10.1137/040611434)

[3] Berland, H., Skaflestad, B., & Wright, W. M. (2007). EXPINT---A MATLAB package for exponential integrators. ACM Transactions on Mathematical Software (TOMS), 33(1), 4. (https://doi.org/10.1145/1206040.1206044)

[4] Hochbruck, M., Lubich, C., & Selhofer, H. (1998). Exponential integrators for large systems of differential equations. SIAM Journal on Scientific Computing, 19(5), 1552-1574. (https://doi.org/10.1137/S1064827595295337)

[5] Tokman, M., Loffeld, J., & Tranquilli, P. (2012). New Adaptive Exponential Propagation Iterative Methods of Runge--Kutta Type. SIAM Journal on Scientific Computing, 34(5), A2650-A2669. (https://doi.org/10.1137/110849961)

[6] Rainwater, G., & Tokman, M. (2016). A new approach to constructing efficient stiffly accurate EPIRK methods. Journal of Computational Physics, 323, 283-309. (https://doi.org/10.1016/j.jcp.2016.07.026)

ChrisRackauckas commented 6 years ago

Great comprehensive list! I see this is missing the IIF which are implicit Lawson methods, but since those utilize additional structure in their actual implementation (or at least should) they should be kept separate.

ChrisRackauckas commented 6 years ago

Hochbruck-Ostermann (5.19) in [2], also in [3].

This is #395 ? I checked it.

ChrisRackauckas commented 6 years ago

The IMEX methods should get a mention as well: https://github.com/JuliaDiffEq/OrdinaryDiffEq.jl/issues/279

ChrisRackauckas commented 6 years ago

These EPIRK methods are probably interesting as well for PDEs: https://link.springer.com/article/10.1007/s10915-018-0761-3

ChrisRackauckas commented 6 years ago

I want to request that we do exprb32 in [1] and exprb43 in [1] before the summer is over. These are the only "classical adaptive" methods, which is important since that's required to be a default for solve(prob) without user dt input. Also, it would be nice to have that setup in place since I would think that future exponential integrators like future EPIRKs will want to head there, so we might as well make sure it works.

ChrisRackauckas commented 5 years ago

What about https://www.researchgate.net/publication/328257114_Further_development_of_efficient_and_accurate_time_integration_schemes_for_meteorological_models ?

Leebre commented 2 years ago

Hi! I am looking to implement one of these exponential integrator methods for my course 18.337 project. Perhaps one of the ones from ref [3]. Would that still be of interest?

ChrisRackauckas commented 2 years ago

Yes, definitely of interest. Only these ones were completed:

https://diffeq.sciml.ai/stable/solvers/split_ode_solve/#OrdinaryDiffEq.jl-2

so there's quite a bit that can be done.