Turning point based on configuration difference¶
Based on the turning point approach, we have implemented a new method which shows stable convergence and does not rely on the dot product formula. Suppose we have found two initial conditions on a given equipotential contour and they turn in the opposite directions. If the difference in \(x\)-coordinates is small (\(\approx 10^{-2}\)), the generated trajectories will approach the UPO from either sides. If the difference in \(x\)-coordinates is large, we can integrate the Hamilton’s equations for a guess time interval and find the turning point (event using ODE event detection) at which the trajectories bounce back from the far side of the equipotential contour in opposite directions. We choose these two points as our initial guess and the difference of \(x\)-coordinates become small now. Without loss of generality, this method can be modified to either pick the difference of \(y\)-coordinates or a combination of \(x\) and \(y\) coordinates. This choice will depend on the orientation of the potential energy surface’s bottleneck in the configuration space.
turning_point_coord_difference.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_coord_difference.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_coord_difference.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_coord_difference.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_coord_difference.turningPoint_configdiff(begin1, begin2, get_coord_model, pot_energy_model, variational_eqns_model, configdiff_model, ham2dof_model, half_period_model, guess_coords_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 based on configuration difference 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 gives different signs(+ or -) for configuration difference
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.