Gyoto
GyotoHayward.h
Go to the documentation of this file.
1 
11 /*
12  Copyright 2018 Frederic Lamy, Frederic Vincent, Thibaut Paumard
13 
14  This file is part of Gyoto.
15 
16  Gyoto is free software: you can redistribute it and/or modify
17  it under the terms of the GNU General Public License as published by
18  the Free Software Foundation, either version 3 of the License, or
19  (at your option) any later version.
20 
21  Gyoto is distributed in the hope that it will be useful,
22  but WITHOUT ANY WARRANTY; without even the implied warranty of
23  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24  GNU General Public License for more details.
25 
26  You should have received a copy of the GNU General Public License
27  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
28  */
29 
30 #ifndef __GyotoHayward_H_
31 #define __GyotoHayward_H_
32 
33 namespace Gyoto {
34  namespace Metric { class Hayward; }
35 }
36 
37 #include <GyotoMetric.h>
38 #include <GyotoWorldline.h>
39 
40 #ifdef GYOTO_USE_XERCES
41 #include <GyotoRegister.h>
42 #endif
43 
44 
68 
69  // Data :
70  // -----
71  protected:
72  double charge_;
73  double spin_ ;
74  double a2_ ;
75  double a3_ ;
76  double a4_ ;
77  double b2_;
78 
79  // Constructors - Destructor
80  // -------------------------
81  public:
83  Hayward();
84  virtual Hayward * clone () const ;
85 
86  // Accessors
87  // ---------
88  void spin(const double spin);
89  double spin() const ;
90  void charge(const double charge);
91  double charge() const ;
92 
93  // Methods needed for PolishDoughnut
94  virtual double getSpecificAngularMomentum(double rr) const;
95  virtual double getPotential(double const pos[4], double l_cst) const;
96 
97  // Keplerian equatorial orbits angular velocity
98  virtual void circularVelocity(double const coor[4], double vel[4],
99  double dir) const;
100 
101  // Actual space-time API
102  void gmunu(double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const ;
103  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 ;
106  using Generic::christoffel;
107  int christoffel(double dst[4][4][4], const double pos[4]) const ;
108 
109  // Optimized
110  double ScalarProd(const double pos[4],
111  const double u1[4], const double u2[4]) const ;
112 
113 };
114 
115 #endif
116 
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
double a4_
a2_*a2_
Definition: GyotoHayward.h:76
virtual double getSpecificAngularMomentum(double rr) const
Gyoto registers.
double b2_
charge_*charge_
Definition: GyotoHayward.h:77
Base class for metrics.
Definition: GyotoMetric.h:158
void gmunu_up(double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const
Metric contravariant coefficients.
virtual double getPotential(double const pos[4], double l_cst) const
virtual double christoffel(const double coord[4], const int alpha, const int mu, const int nu) const
Chistoffel symbol.
double a2_
spin_*spin_
Definition: GyotoHayward.h:74
Timelike or null geodesics.
Base class for metric description.
double ScalarProd(const double pos[4], const double u1[4], const double u2[4]) const
Scalar product.
int christoffel(double dst[4][4][4], const double pos[4]) const
Chistoffel symbol.
double charge_
Magnetic charge parameter.
Definition: GyotoHayward.h:72
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
Metric of a regular rotating black hole or naked worm-hole.
Definition: GyotoHayward.h:66
Pointers performing reference counting.
Definition: GyotoProperty.h:45
double charge() const
Returns charge.
virtual void circularVelocity(double const coor[4], double vel[4], double dir) const
Yield circular velocity at a given position.
double a3_
a2_*spin_
Definition: GyotoHayward.h:75
double spin_
Angular momentum parameter.
Definition: GyotoHayward.h:73
virtual Hayward * clone() const
Virtual copy constructor.
double spin() const
Returns spin.