Repository navigation
Custom 2DOF EOM with velocity/flight path angle as Dymos states. Endpoint singularity when linking flight path angle across a climb-level flight phase junction #1316
Unanswered
OscarEspinosaBarcenas
asked this question in
Q&A
Replies: 3 comments
0 replies
0 replies
|
Hey, Oscar. I think I would like to see the full EOM component so that I can fully understand what is going on. I do agree that you need gamma to go to zero at the end of the climb phases so that you have a smooth transition. This may mean you want to have more points at the ends of those phases, which you can get with LGL for the segment ends, but I think you are already doing that. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment

Uh oh!
There was an error while loading. Please reload this page.
Hi Aviary dev team,
In Aviary's own
two_dof/solved_two_dofphases, the flight path angle (γ) is never a linked Dymos state. It's calculated using an inner Newton/BalanceComp trim solve, orarctan(dh/dr). Is that a design choice? Linking γ across phase boundaries can cause endpoint singularities. Would you suggest a way to keep γ as an explicit collocated state? I want to handle a climb-cruise transition smoothly.For context, I've implemented a 2DOF EOM following the same physics as Aviary's 2DOF, but as explicit Dymos states rather than an inner trim solve::
where v and γ are both Dymos states with their own rate outputs and analytic partials, integrated and collocated like any other state. I did this to get γ directly as an optimizer DOF at every node.
A climb phase feeds into a cruise phase. The level phase enforces constant altitude by setting
γ ≡ 0at every node (fixed initial value + zero-width bounds), rather than constraining altitude directly. The climb phase carries a monotonic path constraint,Dynamic.Mission.ALTITUDE_RATE >= 0(from Aviary's ownno_descentoption).If I let Dymos connect γ continuity at that junction, I then get
γ_climb,final = γ_level,initial = 0from the link. The climb phase's ownḣ ≥ 0constraint activates at that same node, where the mission is physically leveling off. Both pin the same node toγ = 0with proportional gradients (∂ḣ/∂γ = V cos γ ≈ Vnearγ=0). IPOPT's dual infeasibility spikes by 6-7 orders of magnitude at that point and the run falls into restoration and never recovers.My current workaround is to exclude
γfrom the linked-variables set specifically for junctions touching a level phase, leaving the climbing phase's final γ free. I'm attaching two picture to show what I meant.I'm happy to share the full EOM component and IPOPT log if useful, and thanks again for the help in advance.
Oscar
All reactions