OrdinaryDiffEq.jl
OrdinaryDiffEq.jl copied to clipboard
Lie Group Integrators
For u' = A(u,p,t)*u
. In theory this could apply to arbitrary f
, but we can just show in documentation how to use the Jacobian for this.
From https://arxiv.org/pdf/1207.0069.pdf :
- [x] Lie–Euler
- [x] Runge–Kutta–Munthe-Kaas 2
- [x] Crouch-Grossman 2
- [x] Runge–Kutta–Munthe-Kaas 4 (RKMK4)
- [x] LieRK4 (extension to 16)
http://papers.rgrossman.com/journal-011.pdf
- [x] CG3
- [ ] CGMS3
https://link.springer.com/content/pdf/10.1023/A:1016645730465.pdf
- [x] CG4a
- [ ] CG5a
https://link.springer.com/content/pdf/10.1023/A:1022325426017.pdf
- [ ] CG3
- [ ] CG4
- [ ] CGSDIRK3
- [ ] CGESDIRK3
Hairer III
- [ ] CG32 (the other is the same as CG3) page 125
- [ ] LieMidpoint page 127
Lie-Euler implemented in #1090
Out of curiosity, how is one supposed to supply the function for the group exponential?
You define your f
as an operator with and the operator specification has https://docs.juliadiffeq.org/latest/features/diffeq_operator/#AbstractDiffEqLinearOpeartor-Interface-Description-1 exp
and expv
Nice. I'll try integrating it with the Lie group functionality of Manifolds.jl.
oh interesting. Yes, let us know what you need. If we're missing anything in the interface to do this effectively, we can make modifications.
Sure, I'll let you know if I encounter any problems.
Could you always use calls like expv(dt, L, u)
when performing a step for Lie group integrators?Converting the operator to matrix for all non-Krylov methods seems restrictive. Similarly I'd like to be able to separately get dt
, L
and u
for other methods (in case they are required by other integrators then LieEuler
) like the Lie group action, logarithmic map or the differential of the group action.
By the way, wouldn't your LieEuler
work for any Riemannian manifold given the right exponential map? Is there a reason for restricting it to Lie groups?
There is an option in each implementation for either using exp
or expv
.
So the only consequence of setting krylov
to true
here: https://github.com/SciML/OrdinaryDiffEq.jl/pull/1090/files#diff-9d28f892ddd67f73e3e8d9cc88442486R50 is that expv
will be used? Does it have any other effects? I'm not particularly familiar with DifferentialEquations.jl
yet.
For the algorithms that use exponentials, yes.
By the way, wouldn't your LieEuler work for any Riemannian manifold given the right exponential map? Is there a reason for restricting it to Lie groups?
It only requires a right exponential map.
- [x] Runge–Kutta–Munthe-Kaas 2 by #1216
- [x] Crouch-Grossman 2 by #1227
- [x] Runge–Kutta–Munthe-Kaas 4 (RKMK4) by #1218
- [x] LieRK4 (extension to 16) by #1226
- [x] CG3 by #1240
- [x] CG4a by by #1921