14 #ifndef __GyotoNumericalMetricLoreneMetric_H_
15 #define __GyotoNumericalMetricLoreneMetric_H_
21 namespace Metric {
class NumericalMetricLorene; }
22 class FactoryMessenger;
35 #ifdef GYOTO_USE_XERCES
62 Sym_tensor** gamcov_tab_;
63 Sym_tensor** gamcon_tab_;
64 Sym_tensor** kij_tab_;
86 char const * getFileName() const;
87 Vector** getShift_tab() const;
88 Scalar** getLapse_tab() const;
89 Sym_tensor** getGamcon_tab() const;
90 double* getTimes() const;
91 int getNbtimes() const;
92 Valeur** getNssurf_tab() const;
93 Vector** getVsurf_tab() const;
94 Scalar** getLorentz_tab() const;
95 Valeur** getHor_tab() const;
96 double getRisco() const;
97 double getRmb() const;
98 void setLapse_tab(Scalar* lapse, int ii);
99 void setShift_tab(Vector* shift, int ii);
100 void setGamcov_tab(Sym_tensor* gamcov, int ii);
101 void setGamcon_tab(Sym_tensor* gamcon, int ii);
102 void setKij_tab(Sym_tensor* kij, int ii);
103 void setTimes(double time,int ii);
109 virtual int
myrk4(double tt, const double coord[7], double h, double res[7]) const;
110 virtual int
myrk4(Worldline* line, const double coord[8],
111 double h, double res[8]) const;
116 int
myrk4_adaptive(Gyoto::Worldline* line, const double coord[8], double lastnorm, double normref, double coordnew[8], double h0, double& h1, double h1max) const;
118 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;
124 void
reverseR(double tt, double coord[4]) const;
129 void
computeNBeta(const double coord[4],double &NN,double beta[3]) const;
134 double
gmunu(const double x[4], int mu, int nu) const ;
136 double
gmunu(const double x[3], int indice_time, int mu, int nu) const ;
141 double
gmunu_up_dr(const double x[4], int mu, int nu) const ;
143 double
gmunu_up_dr(const double x[3], int indice_time, int mu, int nu) const ;
145 double
christoffel(const double coord[8], const int alpha, const int mu,
146 const int nu) const ;
150 double
christoffel3(const double coord[6], const int indice_time, const int ii,
151 const int jj, const int kk) const ;
158 double
Interpol3rdOrder(double tt, int indice_time, double values[4]) const;
172 int diff(double tt, const double y[7], double res[7]) const ;
173 virtual int diff(const double y[7], double res[7], int indice_time) const ;
175 virtual void
setParameter(std::string, std::string, std::string);
176 #ifdef GYOTO_USE_XERCES
virtual NumericalMetricLorene * clone() const
Virtual copy constructor.
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
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:51
char * filename_
Lorene .d data file(s) path.
Definition: GyotoNumericalMetricLorene.h:51
Base class for work in progress.
Definition: GyotoWIP.h:46
Scalar ** lorentz_tab_
Lorentz factor at surface (if any)
Definition: GyotoNumericalMetricLorene.h:69
virtual void fillElement(FactoryMessenger *fmp)
called from Factory
double h0_refine_
Imposed integration step for refined integration.
Definition: GyotoNumericalMetricLorene.h:57
char * mapkind_
Kind of Lorene mapping Map_af or Map_et.
Definition: GyotoNumericalMetricLorene.h:52
int nb_times_
Nb of time slices.
Definition: GyotoNumericalMetricLorene.h:66
virtual void setParameter(std::string, std::string, std::string)
Set parameter by name.
double rmb_
Marginally bound orbit coordinate radius.
Definition: GyotoNumericalMetricLorene.h:72
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:147
Reference-counting pointers.
double r_refine_
Refine integration below this r.
Definition: GyotoNumericalMetricLorene.h:56
virtual void setParameters(FactoryMessenger *fmp)
< called from Factory
double gmunu(const double x[4], int mu, int nu) const
Valeur ** hor_tab_
Apparent horizon (if any)
Definition: GyotoNumericalMetricLorene.h:70
double gmunu_up_dr(const double x[4], int mu, int nu) const
void reverseR(double tt, double coord[4]) const
Timelike or null geodesics.
Base class for metric description.
Vector ** vsurf_tab_
4-velocity at surface (if any)
Definition: GyotoNumericalMetricLorene.h:68
int specify_marginalorbits_
1 if marginal orbits are specified in file
Definition: GyotoNumericalMetricLorene.h:54
double risco_
ISCO coordinate radius.
Definition: GyotoNumericalMetricLorene.h:71
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:42
double christoffel3(const double coord[6], const int indice_time, const int ii, const int jj, const int kk) const
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:45
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:53
int refine_
1 if refined integration needed
Definition: GyotoNumericalMetricLorene.h:58
double initial_time_
Time at which (first) metric is given.
Definition: GyotoNumericalMetricLorene.h:59
double christoffel(const double coord[8], const int alpha, const int mu, const int nu) const
Chistoffel symbol.
Valeur ** nssurf_tab_
Metric source (e.g. star) surface (if any)
Definition: GyotoNumericalMetricLorene.h:67
double * times_
Coordinate times at which metrics are given.
Definition: GyotoNumericalMetricLorene.h:65
virtual int diff(const double y[8], double res[8]) const
F function such as dy/dtau=F(y,cst)
double horizon_
Value of horizon (or any innermost limit)
Definition: GyotoNumericalMetricLorene.h:55