Skip to content

feat: ComposedHamiltonian and pseudo_variable_gradient AD contract#474

Merged
ocots merged 2 commits into
mainfrom
feat/composed-hamiltonian
Jul 5, 2026
Merged

feat: ComposedHamiltonian and pseudo_variable_gradient AD contract#474
ocots merged 2 commits into
mainfrom
feat/composed-hamiltonian

Conversation

@ocots

@ocots ocots commented Jul 5, 2026

Copy link
Copy Markdown
Member

Summary

This PR adds two new features:

ComposedHamiltonian

A new ComposedHamiltonian type in Data that composes a PseudoHamiltonian with a DynClosedLoop control law: H(t,x,p,v) = H̃(t,x,p,u(t,x,p,v),v).

  • Subtypes AbstractHamiltonian
  • Trait joins computed at construction: NonAutonomous/NonFixed win
  • Functor with natural and uniform (t,x,p,v) call signatures
  • Getters: pseudo_hamiltonian(H) and control_law(H)

pseudo_variable_gradient

The pseudo-Hamiltonian analogue of variable_gradient, computing ∂H̃/∂v with control u held constant (partial derivative).

  • NotImplemented stub in abstract_ad_backend.jl
  • DifferentiationInterface extension method in ext/CTBaseDifferentiationInterface.jl

New files

  • src/Data/composed_hamiltonian.jl
  • test/suite/data/test_composed_hamiltonian.jl
  • test/suite/differentiation/test_pseudo_variable_gradient.jl

Modified files

  • src/Data/Data.jl — include + exports
  • src/Differentiation/Differentiation.jl — export pseudo_variable_gradient
  • src/Differentiation/abstract_ad_backend.jl — NotImplemented stub + docstring
  • ext/CTBaseDifferentiationInterface.jl — DI extension method

Add ComposedHamiltonian — a functor that composes a PseudoHamiltonian with a
DynClosedLoop control law, yielding H(t,x,p,v) = H̃(t,x,p,u(t,x,p,v),v).
Trait joins (NonAutonomous/NonFixed win) are computed at construction time.

Add pseudo_variable_gradient — the pseudo-Hamiltonian analogue of
variable_gradient, computing ∂H̃/∂v with the control u held constant
(partial derivative). Includes the NotImplemented stub in
abstract_ad_backend.jl and the DifferentiationInterface extension method.

New files:
- src/Data/composed_hamiltonian.jl
- test/suite/data/test_composed_hamiltonian.jl
- test/suite/differentiation/test_pseudo_variable_gradient.jl
Update CHANGELOGS.md and BREAKINGS.md with ComposedHamiltonian and
pseudo_variable_gradient entries.
@ocots
ocots merged commit 120e2f1 into main Jul 5, 2026
3 checks passed
@ocots
ocots deleted the feat/composed-hamiltonian branch July 5, 2026 11:09
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.

1 participant