Skip to content
Success

Changes

Summary

  1. Convert ReturnFromMoon maneuver to use analytical Jacobian (commit: dc1bf95) (details)
Commit dc1bf95d22dcc0951376f72a8c9aa43cf764850f by lamont
Convert ReturnFromMoon maneuver to use analytical Jacobian

This doesn't seem to do that much in terms of speedup or stability
really (although I didn't try investigating stability very well).

Investigating the values in the jacobian one of the biggest problems is
clearly integrating back from the terminal endpoints.  The biggest
numbers come from the state transition matrix there.  This is likely
because small target periapsis constraints results in highly eccentric
return orbits.  Taking problems that blow up and using a higher target
periapsis often results in convergence.

There is a note in Ellison & Englander (2019) that might be applicable:

> A more natural propagation strategy would be to utilize time
> eegularization, such a Sundman transformation,18–20 and a
> corresponding modification to the variational equations. This
> is left as future work.

It might also be possible to use some kind of "homotopy" and if the
problem fails, relax the periapsis constraint to some higher
intermediate point that is easier to solve, then use that as an initial
guess.  I'd really like to avoid iterative approaches.

Also I have not investigated how good/bad my initial guessing is, and it
may be possible that in the cases which do not converge that it is very
poor.

I think it may also work to target an Apoapsis now (higher orbit than
the moon around the primary), although I didn't test that a lot.

Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
(commit: dc1bf95)
The file was modified MechJeb2/MechJebLib/Maneuvers/ReturnFromMoon.cs (diff)
The file was modified MechJeb2/MechJebLib/Maneuvers/ChangeOrbitalElement.cs (diff)
The file was modified MechJeb2/MechJebLib/Primitives/V3.cs (diff)
The file was modified MechJeb2/MechJebLib/Utils/Statics.cs (diff)
The file was modified MechJebLibTest/Maths/FunctionsTests.cs (diff)
The file was modified MechJeb2/MechJebLib/Primitives/DualV3.cs (diff)
The file was modified MechJeb2/MechJebLib/Primitives/M3.cs (diff)