Invariant Manifold Computation

CRTBPNaturalMotion.InvariantManifoldType
InvariantManifold{PO <: AbstractPeriodicOrbit}

A struct for invariant manifolds of periodic orbits.

Fields

  • orbit::PO: The periodic orbit.
  • Δr::Float64: The manifold perturbation size (change in position) along stable/unstable eigenvector direction.
source
CRTBPNaturalMotion.generate_stable_manifold_cheb_approximationMethod
generate_stable_manifold_cheb_approximation(
    man::InvariantManifold, left_pert::Bool,
    τ1_npoints::Int, τ1_order::Int, PT1::ParameterizationType,
    τ2_npoints::Int, τ2_order::Int, PT2::ParameterizationType;
    start_cond::Union{Nothing,Function,AbstractFloat} = nothing,
    manifold_length::AbstractFloat = 1.0,
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
) -> FastChebInterpolation{FastChebInterp.ChebPoly{2, SVector{6, Float64}, Int64}}

Generate a Chebyshev approximation for the stable InvariantManifold in terms of PT1 and PT2 for the parameters τ1 and τ2 employing τ1_npoints and τ2_npoints to a Chebyshev polynomial of order τ1_order and τ2_order, respectively.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1_npoints::Int: The number of points to use in the τ1 direction.
  • τ1_order::Int: The order of the Chebyshev interpolation in the τ1 direction.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • τ2_npoints::Int: The number of points to use in the τ2 direction.
  • τ2_order::Int: The order of the Chebyshev interpolation in the τ2 direction.
  • PT2::ParameterizationType: The parameterization type for the τ2 parameter.

Keyword Arguments

  • start_cond::Union{Nothing,Function,AbstractFloat} = nothing: The starting condition for the manifold trajectory. If a scalar, this specifies the distance from the initial condition on the periodic orbit in terms of PT2. If a function, this specifies a termination condition callback function for the solver that will be used to propagate to the initial state of the returned trajectory from the initial condition on the periodic orbit.
  • manifold_length::AbstractFloat = 1.0: The length of the manifold, in CRTBP units. Sets the max length of the manifold, where τ2 = 1.0 corresponds to the full manifold_length.
  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.

Returns

  • FastChebInterpolation{FastChebInterp.ChebPoly{2, SVector{6, Float64}, Int64}}: The Chebyshev interpolant for the stable manifold.
source
CRTBPNaturalMotion.generate_stable_manifold_cheb_interpolantMethod
generate_stable_manifold_cheb_interpolant(
    man::InvariantManifold, left_pert::Bool,
    τ1_order::Int, PT1::ParameterizationType,
    τ2_order::Int, PT2::ParameterizationType;
    start_cond::Union{Nothing,Function,AbstractFloat} = nothing,
    manifold_length::AbstractFloat = 1.0,
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
) -> FastChebInterpolation{FastChebInterp.ChebPoly{2, SVector{6, Float64}, Int64}}

Generate a Chebyshev interpolant for the stable InvariantManifold.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1_order::Int: The order of the Chebyshev interpolation in the τ1 direction.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • τ2_order::Int: The order of the Chebyshev interpolation in the τ2 direction.
  • PT2::ParameterizationType: The parameterization type for the τ2 parameter.

Keyword Arguments

  • start_cond::Union{Nothing,Function,AbstractFloat} = nothing: The starting condition for the manifold trajectory. If a scalar, this specifies the distance from the initial condition on the periodic orbit in terms of PT2. If a function, this specifies a termination condition callback function for the solver that will be used to propagate to the initial state of the returned trajectory from the initial condition on the periodic orbit.
  • manifold_length::AbstractFloat = 1.0: The length of the manifold, in CRTBP units. Sets the max length of the manifold, where τ2 = 1.0 corresponds to the full manifold_length.
  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.

Returns

  • FastChebInterpolation{FastChebInterp.ChebPoly{2, SVector{6, Float64}, Int64}}: The Chebyshev interpolant for the stable manifold.
source
CRTBPNaturalMotion.generate_stable_manifold_cross_section_cheb_approximationMethod
generate_stable_manifold_cross_section_cheb_approximation(
    man::InvariantManifold, left_pert::Bool,
    τ1_order::Int, PT1::ParameterizationType,
    τ2::AbstractFloat, PT2::ParameterizationType;
    start_cond::Union{Nothing,Function,AbstractFloat} = nothing,
    manifold_length::AbstractFloat = 1.0,
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
) -> FastChebInterpolation{FastChebInterp.ChebPoly{1, SVector{6, Float64}, Int64}}

Generate a Chebyshev interpolant for a cross-section of the stable InvariantManifold through a least-squares fit to

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1_npoints::Int: The number of points to use in the τ1 direction.
  • τ1_order::Int: The order of the Chebyshev interpolation in the τ1 direction.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • τ2::AbstractFloat: The fixed choice for the τ2 parameter, which specified the location of the fixed manifold cross-section.
  • PT2::ParameterizationType: The parameterization type for the τ2 parameter.

Keyword Arguments

  • start_cond::Union{Nothing,Function,AbstractFloat} = nothing: The starting condition for the manifold trajectory. If a scalar, this specifies the distance from the initial condition on the periodic orbit in terms of PT2. If a function, this specifies a termination condition callback function for the solver that will be used to propagate to the initial state of the returned trajectory from the initial condition on the periodic orbit.
  • manifold_length::AbstractFloat = 1.0: The length of the manifold, in CRTBP units. Sets the max length of the manifold, where τ2 = 1.0 corresponds to the full manifold_length.
  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.

Returns

  • FastChebInterpolation{FastChebInterp.ChebPoly{2, SVector{6, Float64}, Int64}}: The Chebyshev interpolant for the stable manifold.
source
CRTBPNaturalMotion.generate_stable_manifold_cross_section_cheb_interpolantMethod
generate_stable_manifold_cross_section_cheb_interpolant(
    man::InvariantManifold, left_pert::Bool,
    τ1_order::Int, PT1::ParameterizationType,
    τ2::AbstractFloat, PT2::ParameterizationType;
    start_cond::Union{Nothing,Function,AbstractFloat} = nothing,
    manifold_length::AbstractFloat = 1.0,
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
) -> FastChebInterpolation{FastChebInterp.ChebPoly{1, SVector{6, Float64}, Int64}}

Generate a Chebyshev interpolant for a cross-section of the stable InvariantManifold.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1_order::Int: The order of the Chebyshev interpolation in the τ1 direction.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • τ2::AbstractFloat: The fixed choice for the τ2 parameter, which specified the location of the fixed manifold cross-section.
  • PT2::ParameterizationType: The parameterization type for the τ2 parameter.

Keyword Arguments

  • start_cond::Union{Nothing,Function,AbstractFloat} = nothing: The starting condition for the manifold trajectory. If a scalar, this specifies the distance from the initial condition on the periodic orbit in terms of PT2. If a function, this specifies a termination condition callback function for the solver that will be used to propagate to the initial state of the returned trajectory from the initial condition on the periodic orbit.
  • manifold_length::AbstractFloat = 1.0: The length of the manifold, in CRTBP units. Sets the max length of the manifold, where τ2 = 1.0 corresponds to the full manifold_length.
  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.

Returns

  • FastChebInterpolation{FastChebInterp.ChebPoly{2, SVector{6, Float64}, Int64}}: The Chebyshev interpolant for the stable manifold.
source
CRTBPNaturalMotion.get_stable_manifold_trajectoryMethod
get_stable_manifold_trajectory(
    man::InvariantManifold, left_pert::Bool,
    τ1::AbstractFloat, PT1::ParameterizationType,
    start_cond::Union{AbstractFloat,Function},
    τ2::Union{AbstractFloat,ParameterListType}, PT2::ParameterizationType;
    manifold_length::AbstractFloat = 1.0,
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
)

Returns a single stable manifold trajectory corresponding to the parameters τ1 and τ2. Here, the starting point of the returned trajectory is determined by the argument start_cond. If start_cond is a scalar, this specifies the distance from the initial condition on the periodic orbit in terms of PT2. If start_cond is a function, this specifies a termination condition callback function for the solver that will be used to propagate to the initial state of the returned trajectory from the initial condition on the periodic orbit.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1::AbstractFloat: The parameter for the initial condition on the periodic orbit.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • start_cond::Union{AbstractFloat,Function}: The starting condition for the manifold trajectory. If a scalar, this specifies the distance from the initial condition on the periodic orbit in terms of PT2. If a function, this specifies a termination condition callback function for the solver that will be used to propagate to the initial state of the returned trajectory from the initial condition on the periodic orbit.
  • τ2::Union{AbstractFloat,ParameterListType}: The parameter for the final condition on the manifold. If a single scalar is provided, the returned trajectory is a DifferentialEquations.jl solution struct. If a list is provided, the returned trajectory is an array of states corresponding to each element in the list.
  • PT2::ParameterizationType: The parameterization type for the τ2 parameter.

Keyword Arguments

  • manifold_length::AbstractFloat = 1.0: The length of the manifold, in CRTBP units. Sets the max length of the manifold, where τ2 = 1.0 corresponds to the full manifold_length, starting from the state parameterized by start_cond.
  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.
source
CRTBPNaturalMotion.get_stable_manifold_trajectoryMethod
get_stable_manifold_trajectory(
    man::InvariantManifold, left_pert::Bool,
    τ1::AbstractFloat, PT1::ParameterizationType,
    τ2::Union{AbstractFloat,ParameterListType}, PT2::ParameterizationType;
    manifold_length::AbstractFloat = 1.0,
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
)

Returns a single stable manifold trajectory corresponding to the parameters τ1 and τ2.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1::AbstractFloat: The parameter for the initial condition on the periodic orbit.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • τ2::Union{AbstractFloat,ParameterListType}: The parameter for the final condition on the manifold. If a single scalar is provided, the returned trajectory is a DifferentialEquations.jl solution struct. If a list is provided, the returned trajectory is an array of states corresponding to each element in the list.
  • PT2::ParameterizationType: The parameterization type for the τ2 parameter.

Keyword Arguments

  • manifold_length::AbstractFloat = 1.0: The length of the manifold, in CRTBP units. Sets the max length of the manifold, where τ2 = 1.0 corresponds to the full manifold_length.
  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.
source
CRTBPNaturalMotion.get_stable_manifold_trajectoryMethod
get_stable_manifold_trajectory(
    man::InvariantManifold, left_pert::Bool,
    τ1::AbstractFloat, PT1::ParameterizationType,
    start_cond::Function, term_cond::Function, PT2::ParameterizationType;
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
)

Returns a single stable manifold trajectory given scalar parameter τ1, where the starting state of the returned trajectory is determined through the satisfaction of start_cond and the final state is determined through the satisfaction of term_cond, where start_cond and term_cond are termination condition callback functions.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1::AbstractFloat: The parameter for the initial condition on the periodic orbit.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • start_cond::Function: The starting condition callback function for the solver.
  • term_cond::Function: The termination condition callback function for the solver.
  • PT2::ParameterizationType: The parameterization type for the final condition on the manifold.

Keyword Arguments

  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.
source
CRTBPNaturalMotion.get_stable_manifold_trajectoryMethod
get_stable_manifold_trajectory(
    man::InvariantManifold, left_pert::Bool,
    τ1::AbstractFloat,   PT1::ParameterizationType,
    term_cond::Function, PT2::ParameterizationType;
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
)

Returns a single stable manifold trajectory given scalar parameter τ1, where the final state of the returned trajectory is determined through the satisfaction of term_cond, a termination condition callback function.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1::AbstractFloat: The parameter for the initial condition on the periodic orbit.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • term_cond::Function: The termination condition callback function for the solver.
  • PT2::ParameterizationType: The parameterization type for the final condition on the manifold.

Keyword Arguments

  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.
source
CRTBPNaturalMotion.get_unstable_manifold_trajectoryMethod
get_unstable_manifold_trajectory(
    man::InvariantManifold, left_pert::Bool,
    τ1::AbstractFloat, PT1::ParameterizationType,
    start_cond::Union{AbstractFloat,Function},
    τ2::Union{AbstractFloat,ParameterListType}, PT2::ParameterizationType;
    manifold_length::AbstractFloat = 1.0,
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
)

Returns a single unstable manifold trajectory corresponding to the parameters τ1 and τ2. Here, the starting point of the returned trajectory is determined by the argument start_cond. If start_cond is a scalar, this specifies the distance from the initial condition on the periodic orbit in terms of PT2. If start_cond is a function, this specifies a termination condition callback function for the solver that will be used to propagate to the initial state of the returned trajectory from the initial condition on the periodic orbit.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1::AbstractFloat: The parameter for the initial condition on the periodic orbit.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • start_cond::Union{AbstractFloat,Function}: The starting condition for the manifold trajectory. If a scalar, this specifies the distance from the initial condition on the periodic orbit in terms of PT2. If a function, this specifies a termination condition callback function for the solver that will be used to propagate to the initial state of the returned trajectory from the initial condition on the periodic orbit.
  • τ2::Union{AbstractFloat,ParameterListType}: The parameter for the final condition on the manifold. If a single scalar is provided, the returned trajectory is a DifferentialEquations.jl solution struct. If a list is provided, the returned trajectory is an array of states corresponding to each element in the list.
  • PT2::ParameterizationType: The parameterization type for the τ2 parameter.

Keyword Arguments

  • manifold_length::AbstractFloat = 1.0: The length of the manifold, in CRTBP units. Sets the max length of the manifold, where τ2 = 1.0 corresponds to the full manifold_length, starting from the state parameterized by start_cond.
  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.
source
CRTBPNaturalMotion.get_unstable_manifold_trajectoryMethod
get_unstable_manifold_trajectory(
    man::InvariantManifold, left_pert::Bool,
    τ1::AbstractFloat, PT1::ParameterizationType,
    τ2::Union{AbstractFloat,ParameterListType}, PT2::ParameterizationType;
    manifold_length::AbstractFloat = 1.0,
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
)

Returns a single unstable manifold trajectory corresponding to the parameters τ1 and τ2.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1::AbstractFloat: The parameter for the initial condition on the periodic orbit.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • τ2::Union{AbstractFloat,ParameterListType}: The parameter for the final condition on the manifold. If a single scalar is provided, the returned trajectory is a DifferentialEquations.jl solution struct. If a list is provided, the returned trajectory is an array of states corresponding to each element in the list.
  • PT2::ParameterizationType: The parameterization type for the τ2 parameter.

Keyword Arguments

  • manifold_length::AbstractFloat = 1.0: The length of the manifold, in CRTBP units. Sets the max length of the manifold, where τ2 = 1.0 corresponds to the full manifold_length.
  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.
source
CRTBPNaturalMotion.get_unstable_manifold_trajectoryMethod
get_unstable_manifold_trajectory(
    man::InvariantManifold, left_pert::Bool,
    τ1::AbstractFloat, PT1::ParameterizationType,
    start_cond::Function, term_cond::Function, PT2::ParameterizationType;
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
)

Returns a single unstable manifold trajectory given scalar parameter τ1, where the starting state of the returned trajectory is determined through the satisfaction of start_cond and the final state is determined through the satisfaction of term_cond, where start_cond and term_cond are termination condition callback functions.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1::AbstractFloat: The parameter for the initial condition on the periodic orbit.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • start_cond::Function: The starting condition callback function for the solver.
  • term_cond::Function: The termination condition callback function for the solver.
  • PT2::ParameterizationType: The parameterization type for the final condition on the manifold.

Keyword Arguments

  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.
source
CRTBPNaturalMotion.get_unstable_manifold_trajectoryMethod
get_unstable_manifold_trajectory(
    man::InvariantManifold, left_pert::Bool,
    τ1::AbstractFloat,   PT1::ParameterizationType,
    term_cond::Function, PT2::ParameterizationType;
    solver = Vern9(),
    reltol = 1e-14,
    abstol = 1e-14,
)

Returns a single unstable manifold trajectory given scalar parameter τ1, where the final state of the returned trajectory is determined through the satisfaction of term_cond, a termination condition callback function.

Arguments

  • man::InvariantManifold: The invariant manifold.
  • left_pert::Bool: If true, the perturbation is to the left of the periodic orbit.
  • τ1::AbstractFloat: The parameter for the initial condition on the periodic orbit.
  • PT1::ParameterizationType: The parameterization type for the τ1 parameter.
  • term_cond::Function: The termination condition callback function for the solver.
  • PT2::ParameterizationType: The parameterization type for the final condition on the manifold.

Keyword Arguments

  • solver = Vern9(): The DifferentialEquations.jl solver to use.
  • reltol = 1e-14: The relative tolerance for the solver.
  • abstol = 1e-14: The absolute tolerance for the solver.
source