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 
95  void gmunu(double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const ;
96 
98  int christoffel(double dst[4][4][4], const double coord[4]) const ;
99 
100  // Those two are implemented as examples.
101  // double gmunu(const double x[4], int mu, int nu) const ;
102  // double christoffel(const double coord[4],
103 // const int alpha, const int mu, const int nu) const ;
104  };
105 
106 #endif
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
Gyoto registers.
Astronomical objects (light emitters)
Tellers tell Listeners when they mutate.
Base class for metrics.
Definition: GyotoMetric.h:163
Reference-counting pointers.
virtual double christoffel(const double coord[4], const int alpha, const int mu, const int nu) const
Chistoffel symbol.
double V0value() const
Returns V0.
double r0value() const
Returns r0.
virtual double gmunu(double const x[4], int mu, int nu) const
Metric coefficients.
Gyoto ubiquitous macros and typedefs.
Timelike or null geodesics.
Base class for metric description.
int christoffel(double dst[4][4][4], const double coord[4]) const
Chistoffel symbol.
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