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 {
72  friend class Gyoto::SmartPointer<Gyoto::Astrobj::ThinDisk>;
73 
74  // Data :
75  // -----
76  protected:
77  double rin_ ;
78  double rout_ ;
79 
85  double thickness_;
86  int dir_;
87 
88  // Constructors - Destructor
89  // -------------------------
90  public:
92 
97  ThinDisk(std::string kind="ThinDisk");
98 
99  ThinDisk(const ThinDisk& orig);
100  virtual ThinDisk* clone () const ;
101 
102  virtual ~ThinDisk() ;
103 
104  // Accessors
105  // ---------
106  public:
107  virtual double innerRadius() const ;
108  virtual double innerRadius(std::string const &) const ;
109  virtual void innerRadius(double);
110  virtual void innerRadius(double, std::string const &);
111  virtual double outerRadius() const ;
112  virtual double outerRadius(std::string const &) const ;
113  virtual void outerRadius(double);
114  virtual void outerRadius(double, std::string const &);
115  virtual double thickness() const ;
116  virtual double thickness(std::string const &) const ;
117  virtual void thickness(double);
118  virtual void thickness(double, std::string const&);
119  virtual int dir() const ;
120  virtual void dir(int);
121  virtual bool corotating() const;
122  virtual void corotating(bool t);
123 
127  virtual double operator()(double const coord[]) ;
128 
129  virtual double projectedRadius(double const coord[]) const ;
131 
132  virtual double sphericalPhi(double const coord[]) const;
134 
136 
145  virtual void getVelocity(double const pos[4], double vel[4]) ;
146 
147  public:
148  virtual int Impact(Gyoto::Photon* ph, size_t index,
149  Astrobj::Properties *data=NULL) ;
150  virtual double emission(double , double, double *, double) const;
151 
152 };
153 
154 
155 #endif
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:83
virtual double innerRadius() const
Get rin_.
Pointers performing reference counting.
Definition: GyotoProperty.h:41
virtual double thickness() const
Get thickness_.
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)
Classes with an operator() method.
double rin_
disk inner radius in geometrical units
Definition: GyotoThinDisk.h:77
Base class for metric description.
virtual ThinDisk * clone() const
Cloner.
virtual double outerRadius() const
Get rout_.
virtual int dir() const
Get dir_.
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.
Base class for astronomical object.
Definition: GyotoAstrobj.h:188
virtual double sphericalPhi(double const coord[]) const
Longitude.
virtual double projectedRadius(double const coord[]) const
Projected radius of position coord on the equatorial plane.