SMILE
v2.5
Schwarzschild Modelling Interactive expLoratory Environment
|
corresponding creator class for trajectory sampler. More...
#include <orbitan.h>
Public Member Functions | |
COrbitRuntimeTrajSampleCreator (unsigned int _numSamplingPointsDefault, double _intTimeMin) | |
virtual CBasicOrbitRuntimeFnc * | createRuntimeFnc (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 | |
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.
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.
[in] | orbitIC | specifies the initial conditions for the orbit |
[in] | numSamplingPoints | is the minimum required number of sampling points for this orbit |
[in] | samplingTimestep | additionally specifies the time interval between sampled points (because the total integration time for this orbit is not known by the creator class). |