Skip to content

Ipopt install path + smoke test for LivePulsePlotCallback (0.2a) - #245

Closed
Rchari1 wants to merge 1 commit into
mainfrom
rchari/0.2a-ipopt-livepulse
Closed

Rchari1 wants to merge 1 commit into
mainfrom
rchari/0.2a-ipopt-livepulse

Conversation

@Rchari1

@Rchari1 Rchari1 commented Jun 29, 2026

Copy link
Copy Markdown
Member

Companion to DirectTrajOpt.jl#114 for harmoniqs/amicode#19 (Phase 0′, task 0.2a).

LivePulsePlotCallback already subtypes DirectTrajOpt.AbstractIntermediateCallback, so once DTO's Ipopt backend accepts an intermediate_callback (DTO#114), the same callback object installs on an Ipopt solve exactly as it does on MadNLP. This PR documents + tests that path.

Change

  • src/visualizations/live_callbacks.jl — docstring now shows the IpoptOptions(intermediate_callback = cb) install path alongside the existing MadNLP one, and notes Ipopt needs no RelaxBound-style treatment (full primal always available).
  • ext/PiccoloMakieExt.jl — new end-to-end @testitem that attaches LivePulsePlotCallback to an Ipopt SmoothPulseProblem solve and asserts per-iter iter_<N>.png frames are emitted through the callback.

No mechanism code changes — LivePulsePlotCallback already reconstructs the trajectory from the primal each iter; this PR proves the Ipopt install path works and pins it with a test.

Validation (gpu-dev-v2)

Ran the new smoke test against this branch with DTO#114 dev-coupled: Piccolo tests passed — the Ipopt solve emits per-iter PNGs through LivePulsePlotCallback end-to-end.

Dependency

Needs DirectTrajOpt with the Ipopt intermediate_callback field (DTO#114). The pin DirectTrajOpt = "0.9.5" already admits the forthcoming patch release (v0.9.7); CI here goes green once that release is registered.

🤖 Generated with Claude Code

…PlotCallback

Companion to DirectTrajOpt.jl 0.2a (the Ipopt `intermediate_callback` field).
`LivePulsePlotCallback` already subtypes `AbstractIntermediateCallback`, so once
DTO's Ipopt backend accepts an `intermediate_callback`, the SAME callback object
installs on an Ipopt solve exactly as it does on MadNLP.

- live_callbacks.jl docstring: add the `IpoptOptions(intermediate_callback=cb)`
  install path alongside the existing MadNLP one; note Ipopt needs no
  RelaxBound-style treatment (full primal always available).
- PiccoloMakieExt: add an end-to-end @testitem that attaches LivePulsePlotCallback
  to an Ipopt SmoothPulseProblem solve and asserts per-iter iter_<N>.png frames
  are emitted through the callback.

Requires DirectTrajOpt with the Ipopt intermediate_callback field (the pin
`DirectTrajOpt = "0.9.5"` admits the forthcoming patch release).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Jul 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@jeonghun-jj-lee

Copy link
Copy Markdown
Contributor

Closing — 73 days stale. The Ipopt install path + LivePulsePlotCallback smoke test can be re-opened from a fresh branch if needed.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants