Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Full list of exponential integrators to implement #394

Open
16 of 52 tasks
MSeeker1340 opened this issue Jun 19, 2018 · 8 comments
Open
16 of 52 tasks

Full list of exponential integrators to implement #394

MSeeker1340 opened this issue Jun 19, 2018 · 8 comments

Comments

@MSeeker1340
Copy link
Contributor

MSeeker1340 commented Jun 19, 2018

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.

  • Norsett-Euler/ETDRK1
  • Exponential Trapezoid/ETDRK2
  • ETDRK3
  • ETDRK4

Stiffly accurate methods of Hochbruck

  • Third order method families (5.8), (5.9) and (5.12) in [2].
  • Hochbruck-Ostermann (5.19) in [2], also in [3].

Other methods

  • Exponential Midpoint ((2.40) of [1] with $c_2 = 1/2$)
  • Strehmel and Weiner's third order method in [2].
  • ExpRK methods included in [3]:
    • Krogstad
    • Strehmel and Weiner's fourth order method.
    • Friedli
    • ETD5RKF
  • Affine Lie group schemes in [3]:
    • RKMK2e
    • ETD2CF3
    • Cfree4
    • RKMK4t

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.

  • exprb32 in [1].
  • exprb43 in [1].

Exponential multistep methods

  • Tokman's two-step method and variant ((2.72) in [1]).

ETD schemes

  • ETD2 (partially implemented but needs update and Krylov version).
  • ETD methods in [3]:
    • ABNorsett2
    • ABNorsett3
    • ABNorsett4

Lawson/generalized integrated factor methods

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

  • Lawson-Euler.
  • Lawson-Runge (Example 2.33 in [1]).
  • Lawson and generalized Lawson methods in [3]:
    • ABLawson2
    • ABLawson3
    • ABLawson4
    • Lawson2a
    • Lawson2b
    • Lawson4
    • Ehle-Lawson
    • GenLawson41
    • GenLawson42
    • GenLawson43
    • ModGenLawson41
    • ModGenLawson42
    • ModGenLawson43

EPIRK methods

  • Exp4 ((5.8) of [4])
  • EPIRK methods of Table 4.2 in [5]
    • EPIRK4
    • EPIRK5-P1
    • EPIRK5-P2
  • EPIRK methods in [6]
    • EPIRK4s3A
    • EPIRK4s3B
    • EPIRK5s3
    • EXPRB53s3

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
Copy link
Member

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
Copy link
Member

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

This is #395 ? I checked it.

@ChrisRackauckas
Copy link
Member

The IMEX methods should get a mention as well: #279

@ChrisRackauckas
Copy link
Member

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

@ChrisRackauckas
Copy link
Member

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.

@Leebre
Copy link

Leebre commented Apr 26, 2022

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
Copy link
Member

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants