Gyoto
GyotoThinDisk.h
Go to the documentation of this file.
1 
19 /*
20  Copyright 2011-2015 Thibaut Paumard, Frederic Vincent
21 
22  This file is part of Gyoto.
23 
24  Gyoto is free software: you can redistribute it and/or modify
25  it under the terms of the GNU General Public License as published by
26  the Free Software Foundation, either version 3 of the License, or
27  (at your option) any later version.
28 
29  Gyoto is distributed in the hope that it will be useful,
30  but WITHOUT ANY WARRANTY; without even the implied warranty of
31  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32  GNU General Public License for more details.
33 
34  You should have received a copy of the GNU General Public License
35  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
36  */
37 
38 
39 #ifndef __GyotoThinDisk_H_
40 #define __GyotoThinDisk_H_
41 
42 namespace Gyoto{
43  namespace Astrobj { class ThinDisk; }
44 }
45 
46 #include <GyotoMetric.h>
47 #include <GyotoAstrobj.h>
48 #include <GyotoSpectrum.h>
49 #include <GyotoFunctors.h>
50 
51 #ifdef GYOTO_USE_XERCES
52 #include <GyotoRegister.h>
53 #endif
54 
55 #include <string>
56 
71 {
73 
74  // Data :
75  // -----
76  protected:
77  double rin_ ;
78  double rout_ ;
79 
85  double thickness_;
86  int dir_;
87  unsigned int velocitykind_;
88 
89  // Constructors - Destructor
90  // -------------------------
91  public:
93 
98  ThinDisk(std::string kind="ThinDisk");
99 
100  ThinDisk(const ThinDisk& orig);
101  virtual ThinDisk* clone () const ;
102 
103  virtual ~ThinDisk() ;
104 
105  // Accessors
106  // ---------
107  public:
108  virtual double innerRadius() const ;
109  virtual double innerRadius(std::string const &) const ;
110  virtual void innerRadius(double);
111  virtual void innerRadius(double, std::string const &);
112  virtual double outerRadius() const ;
113  virtual double outerRadius(std::string const &) const ;
114  virtual void outerRadius(double);
115  virtual void outerRadius(double, std::string const &);
116  virtual double thickness() const ;
117  virtual double thickness(std::string const &) const ;
118  virtual void thickness(double);
119  virtual void thickness(double, std::string const&);
120  virtual int dir() const ;
121  virtual void dir(int);
122  virtual bool corotating() const;
123  virtual void corotating(bool t);
124  virtual std::string velocityKind() const ;
125  virtual void velocityKind(std::string const&);
126 
130  virtual double operator()(double const coord[]) ;
131 
132  virtual double projectedRadius(double const coord[]) const ;
134 
135  virtual double sphericalPhi(double const coord[]) const;
137 
139 
148  virtual void getVelocity(double const pos[4], double vel[4]) ;
149 
150  public:
151  virtual int Impact(Gyoto::Photon* ph, size_t index,
152  Astrobj::Properties *data=NULL) ;
153 
154 };
155 
156 
157 #endif
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
double rout_
disk outer radius in geometrical units
Definition: GyotoThinDisk.h:78
virtual int Impact(Gyoto::Photon *ph, size_t index, Astrobj::Properties *data=NULL)
Does a photon at these coordinates impact the object?
double thickness_
disk thickness
Definition: GyotoThinDisk.h:85
A functor like double (func) (double const data[])
Definition: GyotoFunctors.h:43
Gyoto registers.
Astronomical objects (light emitters)
unsigned int velocitykind_
tag for VelocityKind
Definition: GyotoThinDisk.h:87
Classes with an operator() method.
double rin_
disk inner radius in geometrical units
Definition: GyotoThinDisk.h:77
virtual double innerRadius() const
Get rin_.
virtual double thickness() const
Get thickness_.
virtual double sphericalPhi(double const coord[]) const
Longitude.
Base class for metric description.
int dir_
1 for corotating (default), -1 for counterrotating.
Definition: GyotoThinDisk.h:86
Geometrically thin disks and rings.
Definition: GyotoThinDisk.h:68
Spectrum of a simple object (e.g. Star)
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
virtual void getVelocity(double const pos[4], double vel[4])
Get fluid 4-velocity at point.
virtual double projectedRadius(double const coord[]) const
Projected radius of position coord on the equatorial plane.
virtual double outerRadius() const
Get rout_.
Pointers performing reference counting.
Definition: GyotoProperty.h:45
Base class for astronomical object.
Definition: GyotoAstrobj.h:196
virtual ThinDisk * clone() const
Cloner.
virtual int dir() const
Get dir_.
virtual std::string velocityKind() const
Set dir_=t?1:-1.