Open jagot opened 6 years ago
Can we reserve the symbol phi
to refer to the phi functions from exponential integrators? I mean the ones discussed in this review:
https://na.math.kit.edu/download/papers/acta-final.pdf
like phi1 = (exp(z)-1)/z
etc. since these are common in exponential Runge-Kutta. I think we should include ways to efficiently compute these as well. ExpoKit's paper is a nice reference:
This should be done in-place, and a matrix exponential should never be calculated (unless explicitly requested).
This is key for my applications, where usually that's a large PDE discretization where the matrix exponential would produce a large dense matrix which doesn't even fit into memory. So yes, this should be a requirement for an expmv!
function.
Note that we can target getting just one method at first so that way the integrators can be written, and leave alternatives as a future GSoC project. Some of these are great self-contained problems for a student.
Hello,
just to mention that an expmv!
function is provided in Expokit.jl. there is some current ongoing work to add more functions.
@mforets does ExpoKit.jl now have all of this?
This issue collects the ideas that go into the roadmap for Expmv.jl. The basic problem is to calculate
v = kappa(dt*A)*u)
, wherekappa(z)
is some approximation toexp(z)
. This should be done in-place, and a matrix exponential should never be calculated (unless explicitly requested).Different exponentiation algorithms
lufact!
, or preconditioned, if using an iterative method for the solver step.Base changes
It could be that for an operator
L = A + B + C + ...
,A
is diagonal or at least easy to exponentiate in one basis, whilstB
is simpler in another base. A prime example isH = T + V
, where the kinetic operatorT
is diagonal in momentum space (being justk^2/2
), whereasV
is usually diagonal in position space. The basis transform is simply the Fourier transform (in Cartesian coordinates, in cylindrical coordinates, one wants to use the Hankel transform). Some nice way of tagging suitable bases for each operator and providing transforms, would be useful.Traits
Caches
References
General
Krylov methods