Gyoto
GyotoStandardAstrobj.h
Go to the documentation of this file.
1 
13 /*
14  Copyright 2011 Thibaut Paumard, Frederic Vincent
15 
16  This file is part of Gyoto.
17 
18  Gyoto is free software: you can redistribute it and/or modify
19  it under the terms of the GNU General Public License as published by
20  the Free Software Foundation, either version 3 of the License, or
21  (at your option) any later version.
22 
23  Gyoto is distributed in the hope that it will be useful,
24  but WITHOUT ANY WARRANTY; without even the implied warranty of
25  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  GNU General Public License for more details.
27 
28  You should have received a copy of the GNU General Public License
29  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
30  */
31 
32 
33 #ifndef __GyotoStandardAstrobj_H_
34 #define __GyotoStandardAstrobj_H_
35 
36 #include <iostream>
37 #include <fstream>
38 #include <iomanip>
39 #include <string>
40 
41 #include "GyotoAstrobj.h"
42 #include "GyotoFunctors.h"
43 
44 namespace Gyoto{
45  namespace Astrobj {
46  class Standard;
47  }
48 }
49 
87 {
89 
90 
91  // Data :
92  // -----
93  protected:
94  double critical_value_;
95  double safety_value_;
96  double delta_inobj_;
97 
98  // Constructors - Destructor
99  // -------------------------
100  public:
101  GYOTO_OBJECT;
102 
106  Standard();
107 
111  Standard(double radmax);
112 
116  Standard(std::string kind);
117 
121  Standard(const Standard& ) ;
122 
123  virtual ~Standard() ;
124 
125  // Accessors
126  // ---------
127  public:
128  virtual void safetyValue(double val) ;
129  virtual double safetyValue() const ;
130 
136  double deltaInObj() const;
137  void deltaInObj(double val);
138 
139  // Outputs
140  // -------
141  public:
142  virtual int Impact(Gyoto::Photon* ph, size_t index,
143  Astrobj::Properties *data=NULL) ;
144 
155  virtual double operator()(double const coord[4]) = 0;
156 
165  virtual void getVelocity(double const pos[4], double vel[4]) = 0 ;
166 
177  virtual double giveDelta(double coord[8]);
178 
179 
180 
181 };
182 
183 
184 #endif
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
A functor like double (func) (double const data[])
Definition: GyotoFunctors.h:43
Astronomical objects (light emitters)
Classes with an operator() method.
virtual double safetyValue() const
Get Standard::safety_value_.
double critical_value_
See operator()(double const coord[4])
Definition: GyotoStandardAstrobj.h:94
double deltaInObj() const
Get Generic::delta_inobj_.
virtual void getVelocity(double const pos[4], double vel[4])=0
Fluid velocity field.
virtual double giveDelta(double coord[8])
Maximum δ inside object.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
Pointers performing reference counting.
Definition: GyotoProperty.h:45
virtual int Impact(Gyoto::Photon *ph, size_t index, Astrobj::Properties *data=NULL)
Does a photon at these coordinates impact the object?
double delta_inobj_
Constant value of the integration step inside object, in units of the compact object&#39;s mass M...
Definition: GyotoStandardAstrobj.h:96
Base class for astronomical object.
Definition: GyotoAstrobj.h:196
Astronomical objects defined bya a potential/distance.
Definition: GyotoStandardAstrobj.h:84
double safety_value_
See operator()(double const coord[4])
Definition: GyotoStandardAstrobj.h:95