26 #ifndef __GyotoKerrBL_H_ 27 #define __GyotoKerrBL_H_ 30 namespace Metric {
class KerrBL; }
36 #ifdef GYOTO_USE_XERCES 42 #define GYOTO_KERRBL_DEFAULT_DIFFTOL 1e-2 79 void
spin(const double spin);
85 void horizonSecurity(double drhor);
86 double horizonSecurity() const;
87 void genericIntegrator(bool);
88 bool genericIntegrator() const ;
90 virtual double
getRms() const;
92 virtual double
getRmb() const;
96 virtual double
getPotential(double const pos[4], double l_cst) const;
98 void gmunu(double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const ;
99 double gmunu(double const x[4], int mu, int nu) const ;
104 void
gmunu_up(double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const ;
105 double
gmunu_up(double const x[4], int mu, int nu) const ;
108 int
christoffel(double dst[4][4][4], const double pos[4]) const ;
111 const double u1[4], const double u2[4]) const ;
113 void
nullifyCoord(double coord[8], double & tdot2) const;
119 double dir=1.) const ;
121 virtual void
zamoVelocity(double const pos[4], double vel[4]) const ;
124 virtual void
MakeCoord(const double coordin[8], const double cst[5], double coordout[8]) const ;
128 void
MakeMomentum(const double coordin[8], const double cst[5], double coordout[8]) const;
138 int
myrk4(Worldline * line, Gyoto::state_t const &coordin, double h, Gyoto::state_t &res) const;
141 int
myrk4(const double coor[8], const double cst[5], double h, double res[8]) const;
142 int
myrk4_adaptive(Gyoto::Worldline* line, Gyoto::state_t const &coor, double lastnorm, double normref, Gyoto::state_t &coor1, double h0, double& h1, double h1max=GYOTO_DEFAULT_DELTA_MAX) const;
149 int
CheckCons(const double coor_init[8], const double cst[5], double coor_fin[8]) const;
156 void
Normalize4v(double coord[8], const double part_mass) const;
166 virtual int
diff(const double y[8], const double cst[5],
167 double res[8]) const ;
168 virtual int
diff31(state_t const &x, state_t &dxdt, double mass) const ;
172 virtual void
computeNBeta(const double coord[4],double &NN,double beta[3]) const;
175 virtual void
computeCst(const double coord[8], double cst[5]) const;
177 void setParticleProperties(Worldline* line, const double* coord) const;
178 virtual int isStopCondition(double const * const coord) const;
180 virtual void
observerTetrad(double const pos[4], double fourvel[4],
181 double screen1[4], double screen2[4],
182 double screen3[4]) const ;
int myrk4_adaptive(Gyoto::Worldline *line, Gyoto::state_t const &coor, double lastnorm, double normref, Gyoto::state_t &coor1, double h0, double &h1, double h1max=GYOTO_DEFAULT_DELTA_MAX) const
Internal-use adaptive RK4 proxy.
bool generic_integrator_
which integrator to use
Definition: GyotoKerrBL.h:67
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
virtual double getRms() const
virtual double getSpecificAngularMomentum(double rr) const
double drhor_
horizon security
Definition: GyotoKerrBL.h:66
Metric around a Kerr black-hole in Boyer-Lindquist coordinates.
Definition: GyotoKerrBL.h:48
virtual double getPotential(double const pos[4], double l_cst) const
virtual int diff(state_t const &x, state_t &dxdt, double mass) const
F function such as dx/dt=F(x,cst)
Base class for metrics.
Definition: GyotoMetric.h:158
int myrk4(Worldline *line, Gyoto::state_t const &coordin, double h, Gyoto::state_t &res) const
RK4 integrator.
virtual void computeCst(const double coord[8], double cst[5]) const
virtual void observerTetrad(double const pos[4], double fourvel[4], double screen1[4], double screen2[4], double screen3[4]) const
Computes the orthonormal local tetrad of the observer.
double spin() const
Returns spin.
virtual void computeNBeta(const double coord[4], double &NN, double beta[3]) const
double spin_
Angular momentum parameter.
Definition: GyotoKerrBL.h:54
double a2_
spin_*spin_
Definition: GyotoKerrBL.h:55
virtual double getRmb() const
virtual int diff(const double y[8], const double cst[5], double res[8]) const
Used in RK4 proxies.
double difftol_
Numerical tuning parameter.
Definition: GyotoKerrBL.h:64
virtual double christoffel(const double coord[4], const int alpha, const int mu, const int nu) const
Chistoffel symbol.
virtual void circularVelocity(double const pos[4], double vel [4], double dir=1.) const
Yield circular velocity at a given position.
void MakeMomentum(const double coordin[8], const double cst[5], double coordout[8]) const
Transforms from Boyer-Lindquist coordinates [t,r,th,phi,tdot,rdot,thdot,phidot] to [t...
double a3_
a2_*spin_
Definition: GyotoKerrBL.h:56
Timelike or null geodesics.
double a4_
a2_*a2_
Definition: GyotoKerrBL.h:57
Base class for metric description.
void nullifyCoord(double coord[8], double &tdot2) const
Set tdot (coord[4]) such that coord is light-like and return other possible tdot. ...
double ScalarProd(const double pos[4], const double u1[4], const double u2[4]) const
Scalar product.
double rsink_
numerical horizon
Definition: GyotoKerrBL.h:65
int christoffel(double dst[4][4][4], const double pos[4]) const
Chistoffel symbol.
int CheckCons(const double coor_init[8], const double cst[5], double coor_fin[8]) const
Ensure conservation of the constants of motion.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
void Normalize4v(double coord[8], const double part_mass) const
Normalize 4-velocity.
virtual void zamoVelocity(double const pos[4], double vel[4]) const
Yield ZAMO velocity at a given position.
Pointers performing reference counting.
Definition: GyotoProperty.h:45
double difftol() const
Get difftol_.
void gmunu_up(double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const
gμ,ν
virtual void MakeCoord(const double coordin[8], const double cst[5], double coordout[8]) const
Inverse function of MakeMomentumAndCst.
virtual int diff31(state_t const &x, state_t &dxdt, double mass) const
F function such as dx/dt=F(x,cst) for 3+1 case.
virtual KerrBL * clone() const
Virtual copy constructor.