Gyoto
GyotoBalasinGrumiller.h
1 /*
2  Copyright 2025 Filipe Costa, Frédéric Vincent, Thibaut Paumard
3 
4  This file is part of Gyoto.
5 
6  Gyoto is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  Gyoto is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef __BalasinGrumillerheader_H_
21 #define __BalasinGrumillerheader_H_
22 
23 #include <iostream> // for basic I/O
24 #include <cmath> // for mathematical functions
25 #include <fstream>
26 #include <string>
27 #include <vector>
28 
29 #include <GyotoSmartPointer.h>
30 #include <GyotoObject.h>
31 #include <GyotoAstrobj.h>
32 #include <GyotoHooks.h>
33 #include <GyotoDefs.h>
34 #include "GyotoWorldline.h"
35 #include <GyotoMetric.h> // Include Gyoto Metric base class
36 
37 #ifdef GYOTO_USE_XERCES
38 #include <GyotoRegister.h>
39 #endif
40 
41 
42 namespace Gyoto {
43  namespace Metric { class BalasinGrumiller; }
44 }
45 
68 {
70 protected:
71  double V0value_ ;
72  double Rvalue_ ;
73  double r0value_ ;
74 public:
77 virtual BalasinGrumiller* clone() const ;
78 
79  // Mutators / assignment
80  // ---------------------
81  public:
82  // default operator= is fine
83  void V0value(const double V0value);
84  void Rvalue(const double Rvalue);
85  void r0value(const double r0value);
86 
87  // Accessors
88  // ---------
89  public:
90  double V0value() const ;
91  double Rvalue() const ;
92  double r0value() const ;
93 
94  void gmunu(double g[4][4], const double x[4]) const ;
95  int christoffel(double dst[4][4][4], const double x[4]) const ;
96 
97  // Those two are implemented as examples.
98  // double gmunu(const double x[4], int mu, int nu) const ;
99  // double christoffel(const double coord[4],
100 // const int alpha, const int mu, const int nu) const ;
101  };
102 
103 #endif
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
int christoffel(double dst[4][4][4], const double x[4]) const
Chistoffel symbol.
Gyoto registers.
Astronomical objects (light emitters)
Tellers tell Listeners when they mutate.
Base class for metrics.
Definition: GyotoMetric.h:163
Reference-counting pointers.
double V0value() const
Returns V0.
double r0value() const
Returns r0.
Gyoto ubiquitous macros and typedefs.
Timelike or null geodesics.
Base class for metric description.
Introspectable objects.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:46
Pointers performing reference counting.
Definition: GyotoProperty.h:45
double Rvalue() const
Returns R.
virtual BalasinGrumiller * clone() const
Virtual copy constructor.
Balasin-Grumiller solution in spherical coordinates, under the suggested approximation =0...
Definition: GyotoBalasinGrumiller.h:67