Gyoto
GyotoThinDisk.h
Go to the documentation of this file.
1 
19 /*
20  Copyright 2011 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:
91 
96  ThinDisk(std::string kind="ThinDisk");
97 
98  ThinDisk(const ThinDisk& orig);
99  virtual ThinDisk* clone () const ;
100 
101  virtual ~ThinDisk() ;
102 
103  // Accessors
104  // ---------
105  public:
106  virtual double getInnerRadius() const ;
107  virtual double getInnerRadius(std::string unit) const ;
108  virtual void setInnerRadius(double);
109  virtual void setInnerRadius(double, std::string unit);
110  virtual double getOuterRadius() const ;
111  virtual double getOuterRadius(std::string unit) const ;
112  virtual void setOuterRadius(double);
113  virtual void setOuterRadius(double, std::string unit);
114  virtual double getThickness() const ;
115  virtual double getThickness(std::string unit) const ;
116  virtual void setThickness(double);
117  virtual void setThickness(double, std::string unit);
118  virtual int getDir() const ;
119  virtual void setDir(int);
120 
124  virtual double operator()(double const coord[]) ;
125 
126  virtual double projectedRadius(double const coord[]) const ;
128 
129  virtual double sphericalPhi(double const coord[]) const;
131 
133 
142  virtual void getVelocity(double const pos[4], double vel[4]) ;
143 
144  public:
145  virtual int setParameter(std::string name,
146  std::string content,
147  std::string unit) ;
148 
149 #ifdef GYOTO_USE_XERCES
150 
155  virtual void fillElement(FactoryMessenger *fmp) const ;
157 #endif
158 
159  public:
160  virtual int Impact(Gyoto::Photon* ph, size_t index,
161  Astrobj::Properties *data=NULL) ;
162 
163 };
164 
165 
166 #endif