Turning point

This method is based on finding the unstable periodic orbit by detecting trajectories initialized on the equipotential contour (\(V(x,y) = E\) where \(V(x,y)\) is the potetial energy function and \(E\) is the total energy) that turn in the opposite directions. This method relies on the fact that for Hamiltonians of the form kinetic plus potential energy the unstable periodic orbit is the limiting trajectory that bounces back and forth between the equipotential contour corresponding to the given total energy. So to converge on this limiting trajectory, the turning point method iteratively decreases the gap between the bounding trajectories that turn in the opposite directions. Detection of turning is done using a dot product condition which leads to stalling of the method beyond a certain tolerance (typically \(10^{-6}\) in the examples here.)

turning_point.dotproduct(guess1, guess2, n_turn, ham2dof_model, half_period_model, variational_eqns_model, par)[source]

Returns x,y coordinates of the turning points for guess initial conditions guess1, guess2 and the defined product product for the 2 turning points

Uses turning point method(defined a dot product form before the “actual” turning point.)

Parameters:
  • guess1 (1d numpy array) – guess initial condition 1 for the unstable periodic orbit
  • guess2 (1d numpy array) – guess initial condition 2 for the unstable periodic orbit
  • n_turn (int) – nth turning point that is used to define the dot product
  • ham2dof_model (function name) – function that returns the Hamiltonian vector field at an input phase space coordinate and time
  • variational_eqns_model (function name) – function that returns the variational equations of the dynamical system
  • par (float (list)) – model parameters
Returns:

  • x_turn1 (float) – x coordinate of the turning point with initional condition guess1
  • x_turn2 (float) – x coordinate of the turning point with initional condition guess2
  • y_turn1 (float) – y coordinate of the turning point with initional condition guess1
  • y_turn2 (float) – y coordinate of the turning point with initional condition guess2
  • dotproduct (float) – value of the dot product

turning_point.get_eq_pts(eqNum, init_guess_eqpt_model, grad_pot_model, par)[source]

Returns configuration space coordinates of the equilibrium points.

get_eq_pts(eqNum, init_guess_eqpt_model, grad_pot_model, par) solves the coordinates of the equilibrium point for a Hamiltonian of the form kinetic energy (KE) + potential energy (PE).

Parameters:
  • eqNum (int) – 1 is the saddle-center equilibrium point 2 or 3 is the center-center equilibrium point
  • init_guess_eqpt_model (function name) – function that returns the initial guess for the equilibrium point
  • grad_pot_model (function name) – function that defines the vector of potential gradient
  • par (float (list)) – model parameters
Returns:

configuration space coordinates

Return type:

float (list)

turning_point.get_pot_surf_proj(xVec, yVec, pot_energy_model, par)[source]

Returns projection of the potential energy (PE) surface on the configuration space

Parameters:
  • yVec (xVec,) – x,y-coordinates that discretizes the x, y domain of the configuration space
  • pot_energy_model (function name) – function that returns the potential energy of Hamiltonian
  • parameters (float (list)) – model parameters
Returns:

values of the PE

Return type:

2d numpy array

turning_point.get_total_energy(orbit, pot_energy_model, parameters)[source]

Returns total energy (value of Hamiltonian) of a phase space point on an orbit

get_total_energy(orbit, pot_energy_model, parameters) returns the total energy for a Hamiltonian of the form KE + PE.

Parameters:
  • orbit (float (list)) – phase space coordinates (x,y,px,py) of a point on an orbit
  • pot_energy_model (function name) – function that returns the potential energy of Hamiltonian
  • parameters (float (list)) – model parameters
Returns:

total energy (value of Hamiltonian)

Return type:

scalar

turning_point.state_transit_matrix(tf, x0, par, variational_eqns_model, fixed_step=0)[source]

Returns state transition matrix, the trajectory, and the solution of the variational equations over a length of time

In particular, for periodic solutions of % period tf=T, one can obtain the monodromy matrix, PHI(0,T).

Parameters:
  • tf (float) – final time for the integration
  • x0 (float) – initial condition
  • par (float (list)) – model parameters
  • variational_eqns_model (function name) – function that returns the variational equations of the dynamical system
Returns:

  • t (1d numpy array) – solution time
  • x (2d numpy array) – solution of the phase space coordinates
  • phi_tf (2d numpy array) – state transition matrix at the final time, tf
  • PHI (1d numpy array,) – solution of phase space coordinates and corresponding tangent space coordinates

turning_point.turningPoint(begin1, begin2, get_coord_model, guess_coords_model, ham2dof_model, half_period_model, variational_eqns_model, pot_energy_model, plot_iter_orbit_model, par, e, n, n_turn, show_itrsteps_plots, po_fam_file)[source]

turningPoint computes the periodic orbit of target energy using turning point method.

Given 2 inital conditions begin1, begin2, the periodic orbit is assumed to exist between begin1, begin2 such that trajectories with inital conditions begin1, begin2 are turning in different directions, which results in a negative value of the dot product

Parameters:
  • begin1 (function name) – guess initial condition 1 for the unstable periodic orbit
  • begin2 (function name) – guess initial condition 2 for the unstable periodic orbit
  • get_coord_model (function name) – function that returns the phase space coordinate for a given x/y value and total energy E
  • guess_coord_model (function name) – function that returns the coordinates as guess for the next iteration of the
  • point (turning) –
  • ham2dof_model (function name) – function that returns the Hamiltonian vector field at an input phase space coordinate and time
  • half_period_model (function name) – function that returns the event criteria in terms of the coordinate that is set to zero for half-period of the unstable periodic orbit
  • pot_energy_model (function name) – function that returns the potential energy of Hamiltonian
  • variational_eqns_model (function name) – function that returns the variational equations of the dynamical system
  • plot_iter_orbit_model (function name) – function to plot the computed orbit in the 3D phase space of 2 position and 1 momentum coordinate
  • par (float (list)) – model parameters
  • e (float) – total energy of the system
  • n (int) – number of intervals that is divided bewteen the 2 initial guesses begin1 and begin2
  • n_turn (int) – nth turning point that is used to define the dot product
  • show_itrsteps_plots (logical) – flag (True or False) to show iteration of the UPOs in plots
  • po_fam_file (function name) – file name to save the members in the family of the unstable periodic orbits
Returns:

  • x0po (1d numpy array) – Initial condition of the target unstable periodic orbit
  • T (float) – Time period of the target unstable periodic orbit
  • energyPO (float) – Energy of the target unstable periodic orbit.