Gyoto::Worldline::IntegState::Boost Class Reference

Boost integrator. More...

#include <GyotoWorldline.h>

Inheritance diagram for Gyoto::Worldline::IntegState::Boost:
Gyoto::Worldline::IntegState::Generic Gyoto::SmartPointee

List of all members.

Public Types

enum  Kind { runge_kutta_cash_karp54, runge_kutta_fehlberg78, runge_kutta_dopri5, runge_kutta_cash_karp54_classic }

Enum to represent the integrator flavour.

typedef Gyoto::SmartPointer
< Gyoto::SmartPointee
Subcontractor_t (Gyoto::FactoryMessenger *, std::vector< std::string > const &)
 A subcontractor builds an object upon order from the Factory.

Public Member Functions

 Boost (Worldline *parent, std::string type)
 Boost (Worldline *parent, Kind type)
Boostclone (Worldline *newparent) const
 Deep copy.
virtual void init ()
 Cache whatever needs to be cached.
virtual void init (Worldline *line, const state_t &coord, const double delta)
virtual int nextStep (state_t &coord, double &tau, double h1max=1e6)
 Make one step.
virtual void doStep (state_t const &coordin, double step, state_t &coordout)
 Make one step of exactly this size.
virtual std::string kind ()
 Return the integrator kind.
virtual void init (Worldline *line, const double *coord, const double delta)
 Obsolete, update your code.
virtual void checkNorm (double coord[8])
 Check norm.
virtual int nextStep (double *coord, double h1max=GYOTO_DEFAULT_DELTA_MAX)
 Obsolete, update your code.
virtual void doStep (double const coordin[8], double step, double coordout[8])
 Obsolete, update your code.
void incRefCount ()
 Increment the reference counter. Warning: Don't mess with the counter.
int decRefCount ()
 Decrement the reference counter and return current value. Warning: Don't mess with the counter.
int getRefCount ()
 Get the current number of references.

Protected Attributes

 Worldline that we are integrating.
double delta_
 Integration step (current in case of adaptive_).
bool adaptive_
 Whether to use an adaptive step.
bool parallel_transport_
 Whether to parallel-transport base vectors.
double norm_
 Current norm of the 4-velocity.
double normref_
< Gyoto::Metric::Generic
 The Metric in this end of the Universe.

Private Types

typedef std::function
< boost::numeric::odeint::controlled_step_result(state_t
&, double &, double &)> 
typedef std::function< void(state_t
&, double)> 
typedef std::function< void(const
state_t &, state_t &, const

Private Attributes

Kind kind_
 Integrator flavour.
try_step_t try_step_
 Stepper used by the adaptive-step integrator.
do_step_t do_step_
 Stepper used by the non-adaptive-step integrator.


class Gyoto::SmartPointer< Gyoto::Worldline::IntegState::Boost >
class Gyoto::SmartPointer< Gyoto::Worldline::IntegState::Generic >

Detailed Description

Boost integrator.

This Worldline::IntegState::Generic implementation provides several integrators from the boost::numeric::odeint library. To select it, pass one of "runge_kutta_cash_karp54", "runge_kutta_fehlberg78", "runge_kutta_dopri5", or "runge_kutta_cash_karp54_classic" to Worldline::integrator(std::string type).

Member Typedef Documentation

typedef Gyoto::SmartPointer<Gyoto::SmartPointee> Gyoto::SmartPointee::Subcontractor_t(Gyoto::FactoryMessenger *, std::vector< std::string > const &) [inherited]

A subcontractor builds an object upon order from the Factory.

Various classes need to provide a subcontractor to be able to instantiate themselves upon order from the Factory. A subcontractor is a function (often a static member function) which accepts a pointer to a FactoryMessenger as unique parameter, communicates with the Factory using this messenger to read an XML description of the object to build, and returns this objet. SmartPointee::Subcontractor_t* is just generic enough a typedef to cast to and from other subcontractor types: Astrobj::Subcontractor_t, Metric::Subcontractor_t, Spectrum::Subcontractor_t. A subcontractor needs to be registered using the relevant Register() function: Astrobj::Register(), Metric::Register(), Spectrum::Register().

Constructor & Destructor Documentation

Gyoto::Worldline::IntegState::Boost::Boost ( Worldline parent,
std::string  type 


Since this IntegState::Generic implementation can actually be used to implement several distinct integrators, it is necessary to specify which one is meant.

Gyoto::Worldline::IntegState::Boost::Boost ( Worldline parent,
Kind  type 


Since this IntegState::Generic implementation can actually be used to implement several distinct integrators, it is necessary to specify which one is meant.

Member Function Documentation

virtual void Gyoto::Worldline::IntegState::Generic::checkNorm ( double  coord[8]  )  [virtual, inherited]

Check norm.

Issue a warning using GYOTO_SEVERE if norm is drifting. nextStep() implementations should call it.

Boost* Gyoto::Worldline::IntegState::Boost::clone ( Worldline newparent  )  const [virtual]

Deep copy.

Derived classes must implement it

Implements Gyoto::Worldline::IntegState::Generic.

virtual void Gyoto::Worldline::IntegState::Boost::doStep ( state_t const &  coordin,
double  step,
state_t &  coordout 
) [virtual]

Make one step of exactly this size.

doStep() is meant to refine a computation made using nextStep(). In particular, there is no checking for norm conservation.

[in] coordin current position-velocity;
[in] step exact step to use.
[out] coordout next position-velocity;

Implements Gyoto::Worldline::IntegState::Generic.

virtual void Gyoto::Worldline::IntegState::Boost::init ( Worldline line,
const state_t &  coord,
const double  delta 
) [virtual]
line The Worldline that we are integrating. Sets: Worldline::line_, Worldline::gg_, Worldline::adaptive_.
coord Initial coordinate.
delta Integration step. Sign determines direction.

Reimplemented from Gyoto::Worldline::IntegState::Generic.

virtual void Gyoto::Worldline::IntegState::Boost::init (  )  [virtual]

Cache whatever needs to be cached.

This is called by all the methods in Worldline each time an member that could be cached in Worldline::state_ changes. Therefore, user code should normally not have to call it.

Reimplemented from Gyoto::Worldline::IntegState::Generic.

virtual int Gyoto::Worldline::IntegState::Boost::nextStep ( state_t &  coord,
double &  tau,
double  h1max = 1e6 
) [virtual]

Make one step.

[out] coord Next position-velocity;
[out] tau Next proper time or affine parameter
[in] h1max maximum step in case of adaptive integration

Implements Gyoto::Worldline::IntegState::Generic.

Member Data Documentation

The Metric in this end of the Universe.

Taken from Worldline::line_, never updated.

Worldline that we are integrating.

Beware this is not a SmartPointer. Make sure line_ still exists when calling nestStep().

double Gyoto::Worldline::IntegState::Generic::normref_ [protected, inherited]

Initial norm of the 4-velocity.

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

Generated on 23 Oct 2019 for Gyoto by  doxygen 1.6.1