14 #ifndef __GyotoNumericalMetricLoreneMetric_H_
15 #define __GyotoNumericalMetricLoreneMetric_H_
21 namespace Metric {
class NumericalMetricLorene; }
22 class FactoryMessenger;
38 #ifdef GYOTO_USE_XERCES
64 Lorene::Scalar** lapse_tab_;
65 Lorene::Vector** shift_tab_;
66 Lorene::Sym_tensor** gamcov_tab_;
67 Lorene::Sym_tensor** gamcon_tab_;
68 Lorene::Sym_tensor** kij_tab_;
93 void directory(std::string const &dir) ;
94 std::string directory() const ;
95 double initialTime() const ;
96 void initialTime(double t0);
97 double horizon() const ;
98 void horizon(double t0);
100 void rico(double r0);
101 bool hasSurface() const;
102 void hasSurface(bool s);
103 bool bosonstarcircular() const;
104 void bosonstarcircular(bool);
105 bool specifyMarginalOrbits() const;
106 void specifyMarginalOrbits(bool s);
109 std::vector<double> refineIntegStep() const;
110 void refineIntegStep(std::vector<double> const&);
112 Lorene::Vector** getShift_tab() const;
113 Lorene::Scalar** getLapse_tab() const;
114 Lorene::Sym_tensor** getGamcon_tab() const;
115 double* getTimes() const;
116 int getNbtimes() const;
117 Lorene::Valeur** getNssurf_tab() const;
118 Lorene::Vector** getVsurf_tab() const;
119 Lorene::Scalar** getLorentz_tab() const;
120 Lorene::Valeur** getHor_tab() const;
123 void setLapse_tab(Lorene::Scalar* lapse, int ii);
124 void setShift_tab(Lorene::Vector* shift, int ii);
125 void setGamcov_tab(Lorene::Sym_tensor* gamcov, int ii);
126 void setGamcon_tab(Lorene::Sym_tensor* gamcon, int ii);
127 void setKij_tab(Lorene::Sym_tensor* kij, int ii);
128 void setTimes(double time,int ii);
131 virtual double
getPotential(double pos[4], double l_cst) const;
137 virtual int
myrk4(double tt, const double coord[7], double h, double res[7]) const;
138 virtual int
myrk4(Worldline* line, const double coord[8],
139 double h, double res[8]) const;
144 int
myrk4_adaptive(Gyoto::Worldline* line, const double coord[8], double lastnorm, double normref, double coordnew[8], double h0, double& h1, double h1max) const;
146 int
myrk4_adaptive(double tt, const double coor[7], double lastnorm, double normref, double coornew[7], const double cst[2], double& tdot_used, double h0, double& h1, double& hused, double h1max) const;
152 void
reverseR(double tt, double coord[4]) const;
157 void
computeNBeta(const double coord[4],double &NN,double beta[3]) const;
162 double
gmunu(const double x[4], int mu, int nu) const ;
164 double
gmunu(const double x[3], int indice_time, int mu, int nu) const ;
169 double
gmunu_up_dr(const double x[4], int mu, int nu) const ;
171 double
gmunu_up_dr(const double x[3], int indice_time, int mu, int nu) const ;
173 double
christoffel(const double coord[8], 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) const;
182 const double * coord,
183 const int indice_time) const;
187 double
christoffel3(const double coord[6], const int indice_time, const int ii,
188 const int jj, const int kk) const ;
195 double
Interpol3rdOrder(double tt, int indice_time, double values[4]) const;
209 virtual int
diff(const double coord[8], double res[8]) const;
210 int
diff(double tt, const double y[7], double res[7]) const ;
211 virtual int
diff(const double y[7], double res[7], int indice_time) const ;
235 double dir, int indice_time) const ;
virtual NumericalMetricLorene * clone() const
Virtual copy constructor.
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:83
void setParticleProperties(Worldline *line, const double *coord) const
Set Metric-specific constants of motion. Used e.g. in KerrBL.
double computeHorizon(const double *pos) const
char * filename_
Lorene .d data file(s) path.
Definition: GyotoNumericalMetricLorene.h:54
bool mapet_
Kind of Lorene mapping: 'false' for Map_af, 'true' for Map_et.
Definition: GyotoNumericalMetricLorene.h:55
Base class for work in progress.
Definition: GyotoWIP.h:46
double h0_refine_
Imposed integration step for refined integration.
Definition: GyotoNumericalMetricLorene.h:61
int nb_times_
Nb of time slices.
Definition: GyotoNumericalMetricLorene.h:70
double rmb_
Marginally bound orbit coordinate radius.
Definition: GyotoNumericalMetricLorene.h:77
void computeNBeta(const double coord[4], double &NN, double beta[3]) const
void free()
deallocate memory
double Interpol3rdOrder(double tt, int indice_time, double values[4]) const
virtual void setMetricSource()
Base class for metrics.
Definition: GyotoMetric.h:148
Reference-counting pointers.
Lorene::Valeur ** nssurf_tab_
Metric source (e.g. star) surface (if any)
Definition: GyotoNumericalMetricLorene.h:71
double r_refine_
Refine integration below this r.
Definition: GyotoNumericalMetricLorene.h:60
virtual int diff(const double coord[8], double res[8]) const
Lorene::Scalar ** lorentz_tab_
Lorentz factor at surface (if any)
Definition: GyotoNumericalMetricLorene.h:73
bool bosonstarcircular_
1 to implement the circular velocity of a boson star
Definition: GyotoNumericalMetricLorene.h:56
double gmunu(const double x[4], int mu, int nu) const
Lorene::Valeur ** hor_tab_
Apparent horizon (if any)
Definition: GyotoNumericalMetricLorene.h:74
Definition: GyotoNumericalMetricLorene.h:26
virtual double getPotential(double pos[4], double l_cst) const
double gmunu_up_dr(const double x[4], int mu, int nu) const
Lorene::Vector ** vsurf_tab_
4-velocity at surface (if any)
Definition: GyotoNumericalMetricLorene.h:72
void reverseR(double tt, double coord[4]) const
Timelike or null geodesics.
Base class for metric description.
int specify_marginalorbits_
1 if marginal orbits are specified in file
Definition: GyotoNumericalMetricLorene.h:58
void circularVelocity(double const *coor, double *vel, double dir) const
Yield circular velocity at a given position.
double risco_
ISCO coordinate radius.
Definition: GyotoNumericalMetricLorene.h:75
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
double rico_
Innermost circular orbit coordinate radius.
Definition: GyotoNumericalMetricLorene.h:76
double christoffel3(const double coord[6], const int indice_time, const int ii, const int jj, const int kk) const
Pointers performing reference counting.
Definition: GyotoProperty.h:41
int myrk4_adaptive(Gyoto::Worldline *line, const double coord[8], double lastnorm, double normref, double coordnew[8], double h0, double &h1, double h1max) const
Definition: GyotoNumericalMetricLorene.h:48
virtual int myrk4(double tt, const double coord[7], double h, double res[7]) const
int has_surface_
1 if the metric source has a surface
Definition: GyotoNumericalMetricLorene.h:57
int refine_
1 if refined integration needed
Definition: GyotoNumericalMetricLorene.h:62
double initial_time_
Time at which (first) metric is given.
Definition: GyotoNumericalMetricLorene.h:63
double christoffel(const double coord[8], const int alpha, const int mu, const int nu) const
Chistoffel symbol.
virtual double getSpecificAngularMomentum(double rr) const
double * times_
Coordinate times at which metrics are given.
Definition: GyotoNumericalMetricLorene.h:69
double horizon_
Value of horizon (or any innermost limit)
Definition: GyotoNumericalMetricLorene.h:59