Skip to content
/ Jupo.jl Public

Numerically finding Unstable Periodic Orbits using Julia

License

Notifications You must be signed in to change notification settings

ushham/Jupo.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jupo

Build Status

A julia package for numerically finding Unstable Periodic Orbits (UPOs) in dynamical systems.

This library accompanies the study currently under review:

Hamilton, O., Demaeyer, J., Crucifix, M. & Vannitsem, S. (2025) Using Unstable Periodic Orbits to Understand Blocking Behaviour in a Low Order Land-Atmosphere Model [under review] https://arxiv.org/abs/2503.02808

It is planned to improve this library and then add to ChaosTools.jl, see issue 347.

Examples

Here are some of the UPOs of the Lorenz 63 system:Lorenz63_upos

Usage

To find the UPOs of a given dynamical system, define a System, as the collection of the dynamical rule, the jacobian, and some other information about the system:

lorenz = System(
        name="Lorenz", 
        f=lorenz!, 
        jac=lorenz_j!, 
        ndim=3, 
        p=[10., 28., 8/3],
        p_names=["sig", "r", "b"]
        )
end

this is passed to the method of choice for finding the UPOs, along with a Vector containing the initial conditions and the initial period: ic = [x_0; T].

upo = find_upo_nm(lorenz, ic)

This will produce a UPO_sol struct, which contains:

  • success (whether the algorithm ran successfully)
  • ic (initial conditions)
  • period
  • system (summary of system parameters)
  • floquet_multipliers

Currently only the newton method finder is working. In the future the stabilising transforms method will be added.

About

Numerically finding Unstable Periodic Orbits using Julia

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages