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 void setInnerRadius(double);
108  virtual double getOuterRadius() const ;
109  virtual void setOuterRadius(double);
110  virtual double getThickness() const ;
111  virtual void setThickness(double);
112  virtual int getDir() const ;
113  virtual void setDir(int);
114 
118  virtual double operator()(double const coord[]) ;
119 
120  virtual double projectedRadius(double const coord[]) const ;
122 
123  virtual double sphericalPhi(double const coord[]) const;
125 
137  virtual void getVelocity(double const pos[4], double vel[4]) ;
138 
139  public:
140  virtual int setParameter(std::string name, std::string content) ;
141 
142 #ifdef GYOTO_USE_XERCES
143 
148  virtual void fillElement(FactoryMessenger *fmp) const ;
150 #endif
151 
152  public:
153  virtual int Impact(Gyoto::Photon* ph, size_t index,
154  Astrobj::Properties *data=NULL) ;
155 
156 };
157 
158 
159 #endif