14#ifndef __GyotoNumericalMetricLoreneMetric_H_
15#define __GyotoNumericalMetricLoreneMetric_H_
22 class FactoryMessenger;
37#ifdef GYOTO_USE_XERCES
63 Lorene::Scalar** lapse_tab_;
64 Lorene::Vector** shift_tab_;
65 Lorene::Sym_tensor** gamcov_tab_;
66 Lorene::Sym_tensor** gamcon_tab_;
67 Lorene::Sym_tensor** kij_tab_;
94 void directory(std::string const &dir) ;
95 std::string directory() const ;
96 double initialTime() const ;
97 void initialTime(double t0);
98 double horizon() const ;
99 void horizon(double t0);
100 double rico() const ;
101 void rico(double r0);
102 bool hasSurface() const;
103 void hasSurface(bool s);
104 bool hasAccelerationVector() const;
105 void hasAccelerationVector(bool aa);
106 bool bosonstarcircular() const;
107 void bosonstarcircular(bool);
108 bool specifyMarginalOrbits() const;
109 void specifyMarginalOrbits(bool s);
112 bool axisymCirc() const;
113 void axisymCirc(bool s);
115 Lorene::Vector** getShift_tab() const;
116 Lorene::Scalar** getLapse_tab() const;
117 Lorene::Sym_tensor** getGamcon_tab() const;
118 Lorene::Sym_tensor** getGamcov_tab() const;
119 double* getTimes() const;
120 int getNbtimes() const;
121 Lorene::Valeur** getNssurf_tab() const;
122 Lorene::Vector** getVsurf_tab() const;
123 Lorene::Vector** getAccel_tab() const;
124 Lorene::Scalar** getLorentz_tab() const;
125 Lorene::Valeur** getHor_tab() const;
128 void setLapse_tab(Lorene::Scalar* lapse, int ii);
129 void setShift_tab(Lorene::Vector* shift, int ii);
130 void setGamcov_tab(Lorene::Sym_tensor* gamcov, int ii);
131 void setGamcon_tab(Lorene::Sym_tensor* gamcon, int ii);
132 void setKij_tab(Lorene::Sym_tensor* kij, int ii);
133 void setTimes(double time,int ii);
141 virtual void
computeNBeta(const double coord[4],double &NN,double beta[3]) const;
147 double
gmunu(const double x[4], int mu, int nu) const ;
149 double
gmunu(const double x[3], int indice_time, int mu, int nu) const ;
151 virtual void
gmunu_up(double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const ;
153 void
gmunu_up(double gup[4][4], const double x[4], int indice_time) const ;
155 void gmunu_di(const double pos[4],
156 double gmunudr[4][4],
157 double gmunudth[4][4]) const ;
159 void gmunu_di(const double pos[4],
161 double gmunudr[4][4],
162 double gmunudth[4][4]) const ;
164 virtual void
jacobian(double ARGOUT_ARRAY3[4][4][4], const double IN_ARRAY1[4]) const ;
171 double
gmunu_up_dr(const double x[3], int indice_time, int mu, int nu) const ;
173 double
christoffel(const double coord[4], const int alpha, const int mu,
174 const int nu) const ;
177 const int mu, const int nu,
178 const int indice_time) const;
180 const double coord[4]) const;
182 const double coord[4],
183 const int indice_time) const;
205 virtual int
diff(state_t const &coord, state_t &res, double mass) const;
206 int
diff(double tt, const double y[7], double res[7]) const ;
207 virtual int
diff(const double y[7], double res[7], int indice_time) const ;
208 virtual int
diff31(state_t const &x, state_t &dxdt, double mass) const ;
232 double dir, int indice_time) const ;
Base class for metric description.
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition GyotoObject.h:99
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition GyotoObject.h:84
Reference-counting pointers.
Timelike or null geodesics.
Base class for metrics.
Definition GyotoMetric.h:162
virtual double gmunu(double const x[4], int mu, int nu) const
Metric coefficients.
Definition GyotoNumericalMetricLorene.h:49
double computeHorizon(const double *pos) const
Computation of horizon value.
double Interpol3rdOrder(double tt, int indice_time, double values[4]) const
3rd order interpolation routine
virtual void computeNBeta(const double coord[4], double &NN, double beta[3]) const
virtual void jacobian(double ARGOUT_ARRAY3[4][4][4], const double IN_ARRAY1[4]) const
Derivatives of the metric covariant coefficients.
double risco_
ISCO coordinate radius.
Definition GyotoNumericalMetricLorene.h:75
int has_surface_
1 if the metric source has a surface
Definition GyotoNumericalMetricLorene.h:57
bool mapet_
Kind of Lorene mapping: 'false' for Map_af, 'true' for Map_et.
Definition GyotoNumericalMetricLorene.h:54
void free()
deallocate memory
Lorene::Valeur ** hor_tab_
Apparent horizon (if any)
Definition GyotoNumericalMetricLorene.h:74
Lorene::Vector ** vsurf_tab_
4-velocity at surface (if any)
Definition GyotoNumericalMetricLorene.h:71
virtual void setMetricSource()
double christoffel(const double coord[4], const int alpha, const int mu, const int nu) const
Chistoffel symbol.
double gmunu_up_dr(const double x[4], int mu, int nu) const
r derivative of contravariant 4-metric
double initial_time_
Time at which (first) metric is given.
Definition GyotoNumericalMetricLorene.h:62
Lorene::Valeur ** nssurf_tab_
Metric source (e.g. star) surface (if any)
Definition GyotoNumericalMetricLorene.h:70
char * filename_
Lorene .d data file(s) path.
Definition GyotoNumericalMetricLorene.h:53
virtual void gmunu_up(double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const
Metric contravariant coefficients.
int has_acceleration_vector_
Definition GyotoNumericalMetricLorene.h:58
double rmb_
Marginally bound orbit coordinate radius.
Definition GyotoNumericalMetricLorene.h:77
double * times_
Coordinate times at which metrics are given.
Definition GyotoNumericalMetricLorene.h:68
int nb_times_
Nb of time slices.
Definition GyotoNumericalMetricLorene.h:69
virtual int diff(state_t const &coord, state_t &res, double mass) const
Lorene::Vector ** accel_tab_
4-acceleration at surface (if any)
Definition GyotoNumericalMetricLorene.h:72
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 double getSpecificAngularMomentum(double rr) const
double horizon_
Value of horizon (or any innermost limit)
Definition GyotoNumericalMetricLorene.h:61
int specify_marginalorbits_
1 if marginal orbits are specified in file
Definition GyotoNumericalMetricLorene.h:60
bool axisymCirc_
True if sacetime is axisymmetric and circular.
Definition GyotoNumericalMetricLorene.h:55
bool bosonstarcircular_
1 to implement the circular velocity of a boson star
Definition GyotoNumericalMetricLorene.h:56
double rico_
Innermost circular orbit coordinate radius.
Definition GyotoNumericalMetricLorene.h:76
double gmunu(const double x[4], int mu, int nu) const
Metric coefficients.
Lorene::Scalar ** lorentz_tab_
Lorentz factor at surface (if any)
Definition GyotoNumericalMetricLorene.h:73
virtual NumericalMetricLorene * clone() const
Virtual copy constructor.
virtual double getPotential(double const pos[4], double l_cst) const
void circularVelocity(double const coor[4], double vel[3], double dir) const
Yield circular velocity at a given position.
Class for 3+1 numerical metrics computed by LORENE. This class can handle (so far) any kind of LORENE...
Pointers performing reference counting.
Definition GyotoSmartPointer.h:135
Namespace for the Gyoto library.
Definition GyotoAstrobj.h:44