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
33namespace 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:
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 ;
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
Base class for metric description.
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition GyotoObject.h:84
Gyoto registers.
Timelike or null geodesics.
Base class for metrics.
Definition GyotoMetric.h:162
virtual double christoffel(const double coord[4], const int alpha, const int mu, const int nu) const
Chistoffel symbol.
Metric of a regular rotating black hole or naked worm-hole.
Definition GyotoHayward.h:66
double a4_
a2_*a2_
Definition GyotoHayward.h:76
virtual Hayward * clone() const
Virtual copy constructor.
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 ScalarProd(const double pos[4], const double u1[4], const double u2[4]) const
Scalar product.
void gmunu_up(double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const
Metric contravariant coefficients.
double spin() const
Returns spin.
double a3_
a2_*spin_
Definition GyotoHayward.h:75
double a2_
spin_*spin_
Definition GyotoHayward.h:74
virtual double getSpecificAngularMomentum(double rr) const
int christoffel(double dst[4][4][4], const double pos[4]) const
Chistoffel symbol.
double b2_
charge_*charge_
Definition GyotoHayward.h:77
double charge_
Magnetic charge parameter.
Definition GyotoHayward.h:72
void gmunu(double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const
Metric coefficients.
virtual double getPotential(double const pos[4], double l_cst) const
double spin_
Angular momentum parameter.
Definition GyotoHayward.h:73
Pointers performing reference counting.
Definition GyotoSmartPointer.h:135
Namespace for the Gyoto library.
Definition GyotoAstrobj.h:44