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:
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: 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: 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: 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.