SMILE  v2.5
Schwarzschild Modelling Interactive expLoratory Environment
Public Member Functions | Private Attributes | List of all members
smile::COrbitRuntimePoincare Class Reference

compute the Poincare surface of section for an orbit. More...

#include <orbitan.h>

Inheritance diagram for smile::COrbitRuntimePoincare:
Inheritance graph
[legend]
Collaboration diagram for smile::COrbitRuntimePoincare:
Collaboration graph
[legend]

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 CBasicInformationgetData () 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 COrbitorbit
 pointer to the orbit that is being integrated
 

Detailed Description

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.

Member Function Documentation

CBasicOrbitRuntimeFnc::STEPRESULT smile::COrbitRuntimePoincare::Timestep ( const double  told,
const double  tcur,
CPosVelPoint< double > *  vars 
)
virtual

the following method is called after each timestep.

Parameters
[in]toldis the value of time at the beginning of the timestep
[in]tcuris the time at the end of timestep
[in,out]varsare 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].

Returns
true if integration may be finished right now [default], false if needs to continue. (the ultimate decision is taken by orbit integration routine and may ignore the demands of runtime functions)

Implements smile::CBasicOrbitRuntimeFnc.


The documentation for this class was generated from the following files: