Skip to content

Use BVP interface to encode periodic orbits #328

Description

@rveltz

We still have two implementations for PO and BVP whereas PO are a sub case of BVP.

Section should be taken from src/periodicorbit/Sections.jl. However, it seems Collocation and Trapeze from src/periodicorbit/ do not rely on src/periodicorbit/Sections.jl. Perhaps, we should refactor this first.

  • The phase condition for Shooting relies on SectionSS
    • refactor sections in Collocation and Trapeze
  • The phase condition for Collocation implements the constraint ∫_0^T < u(t), ϕ'(t) > dt = 0 where ϕ is the periodic orbit at the previous continuation step.
    • we should try to remove from Collocation, there are not used for the phase constraints. Create a SectionCollocation which stores ϕ and ∂ϕ
    • put sections in Sections.jl

It is perhaps a good idea to

At this stage, the current tests should pass, except StuartLandoCollocationDisc

struct DiscretizedPO{Tmodel, Tdisc, Tcache, Ts} <: AbstractDiscretizedPO
        d_bvp::DiscretizedBVP{Tmodel, Tdisc, Tcache}
        section::Ts
end

todo list

  • forward getters get_time_interval, ...
  • do not use hard coded reshape, but rely on get_time_slices
  • the code for residual (collocation, shooting) should be factorized
  • one should create mesh cache during the call to discretize
  • add DiscretizedPO in DiscretizeBVP.jl
  • POBifProblem to .... In the constructor, add update_section_every_step::UInt = 1,jacobian= DenseAnalytical()

At this stage, all tests should pass.

I would rather to create a singleton struct; UpdateFunctionForPOFunctional; end, pass it as en update! function and dispatch on it.

  • put periodic orbits implementation in src/bvp
  • remove folder src/periodicorbit

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions