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

corresponding creator class for trajectory sampler. More...

#include <orbitan.h>

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

Public Member Functions

 COrbitRuntimeTrajSampleCreator (unsigned int _numSamplingPointsDefault, double _intTimeMin)
 
virtual CBasicOrbitRuntimeFnccreateRuntimeFnc (const COrbit *orbit) const
 create an instance of the runtime function for a given orbit.
 
void addOrbitSpecial (const CPosVelPoint< float > &orbitIC, size_t numSamplingPoints, double samplingTimestep)
 Add the orbit with the given initial conditions to the list of "special" orbits, for which the number of sampling points should be larger than usual. More...
 

Private Attributes

const unsigned int numSamplingPointsDefault
 standard number of sampling points for all orbits except for the special list
 
const double intTimeMin
 (minimum) integration time in periods, needed to compute timestep
 
std::vector< CPosVelPoint
< float > > 
specialIC
 list of special orbits, for which the number of sampling points needs to be larger
 
std::vector< size_t > specialNumSamplingPoints
 list of required number of sampling points for special orbits
 
std::vector< double > specialSamplingTimestep
 list of required sampling timestep for special orbits
 

Detailed Description

corresponding creator class for trajectory sampler.

In the Schwarzschild model, orbits that have a high weight may need more sampling points to represent them in the Nbody model. Consequently, if the number of sampling points for an orbit was insufficient, it will be re-integrated before exporting to Nbody model, with an increased number of sampling points.

This creator class takes care of these special orbits: it requests a default number of sampling points for all orbits except those ones which initial conditions are listed in the numSamplingPointsSpecial array; these special points are requested to provide more samples. intTimeMin is the (minimal) length of integration time (in periods), it is necessary to compute the interval between sampling points used by COrbitRuntimeTrajSample, since the runtime function does not know the total duration of the integration in advance.

Member Function Documentation

void smile::COrbitRuntimeTrajSampleCreator::addOrbitSpecial ( const CPosVelPoint< float > &  orbitIC,
size_t  numSamplingPoints,
double  samplingTimestep 
)

Add the orbit with the given initial conditions to the list of "special" orbits, for which the number of sampling points should be larger than usual.

This function is called from COrbitLibrary::exportNbody, when the number of points sampled from a given orbit is less than required (i.e. its weight in the Schwarzschild solution divided by the mass of one particle in N-body model). This orbit is added to the "special" list, and during reintegtation, it will be sampled with the required number of points.

Parameters
[in]orbitICspecifies the initial conditions for the orbit
[in]numSamplingPointsis the minimum required number of sampling points for this orbit
[in]samplingTimestepadditionally specifies the time interval between sampled points (because the total integration time for this orbit is not known by the creator class).

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