SMILE
v2.5
Schwarzschild Modelling Interactive expLoratory Environment
|
compute the Poincare surface of section for an orbit. More...
#include <orbitan.h>
Public Member Functions | |
COrbitRuntimePoincare (const COrbit *_orbit, unsigned int _PS1, unsigned int _PS2, unsigned int _Ncross) | |
virtual FNCTYPE | FncType () const |
derived classes return their type | |
virtual STEPRESULT | Timestep (const double told, const double t, CPosVelPoint< double > *vars) |
the following method is called after each timestep. More... | |
virtual CBasicInformation * | getData () const |
returns the collected data as an instance of an information object | |
bool | getLastCrossing (CPosVelPoint< double > *cross) const |
return full coordinates of the last point that the orbit crossed the surface of section, if it exists. | |
Public Member Functions inherited from smile::CBasicOrbitRuntimeFnc | |
CBasicOrbitRuntimeFnc (const COrbit *_orbit) | |
constructs instance and initializes some internal data | |
virtual | ~CBasicOrbitRuntimeFnc () |
destroys all necessary internal data | |
virtual void | Finish () |
called when integration is finished, performs cleanup/postprocessing but doesn't destroy collected data | |
Private Attributes | |
const unsigned int | PS1 |
const unsigned int | PS2 |
index of coordinates to use in Poincare section: PS1 is the coordinate to record, PS2 is the coordinate to pass through zero | |
const unsigned int | Ncross |
maximum number of points in the section, after which the orbit integration should terminate | |
std::vector< std::pair< double, double > > | ps |
list of recorded points in the surface of section ({x, xdot}, where x is the coordinate specified by index PS1) | |
CPosVelPoint< double > | lastCrossing |
keeps the coordinates of last point of crossing the surface of section | |
Additional Inherited Members | |
Public Types inherited from smile::CBasicOrbitRuntimeFnc | |
enum | FNCTYPE { FT_TRAJ_ANALYSIS, FT_TRAJ_SAMPLE, FT_POINCARE, FT_PERICENTER, FT_SCHW, FT_VEL_PERTURBER } |
lists all possible runtime functions More... | |
enum | STEPRESULT { SR_CONTINUE, SR_TERMINATE, SR_REINIT } |
result of processing of a timestep More... | |
Protected Attributes inherited from smile::CBasicOrbitRuntimeFnc | |
const COrbit * | orbit |
pointer to the orbit that is being integrated | |
compute the Poincare surface of section for an orbit.
When coord2=0 and coord2'>0, record a pair (coord1, coord1'). The Poincare surface of section is used only for visualization in the GUI, it has no use in Schwarzschild modelling, although may be utilized to systematically explore the phase space at a given energy (using orbit library in the Frequency Map mode). If Ncross>0, the orbit is integrated until it passes through coord2=0 plane at least Ncross times.
|
virtual |
the following method is called after each timestep.
[in] | told | is the value of time at the beginning of the timestep |
[in] | tcur | is the time at the end of timestep |
[in,out] | vars | are the phase-space variables at the end of timestep; the function may change them and return SR_REINIT to indicate that the ODE integrator needs to be restarted. |
This procedure may call orbit->getPos() and orbit->getVel() to get interpolated coordinates on the interval [told, tcur].
Implements smile::CBasicOrbitRuntimeFnc.