Gyoto
GyotoPageThorneDisk.h
Go to the documentation of this file.
1 
14 /*
15  Copyright 2011 Frederic Vincent, Thibaut Paumard
16 
17  This file is part of Gyoto.
18 
19  Gyoto is free software: you can redistribute it and/or modify
20  it under the terms of the GNU General Public License as published by
21  the Free Software Foundation, either version 3 of the License, or
22  (at your option) any later version.
23 
24  Gyoto is distributed in the hope that it will be useful,
25  but WITHOUT ANY WARRANTY; without even the implied warranty of
26  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27  GNU General Public License for more details.
28 
29  You should have received a copy of the GNU General Public License
30  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
31  */
32 
33 #ifndef __GyotoPageThorneDisk_H_
34 #define __GyotoPageThorneDisk_H_
35 
36 #include <iostream>
37 #include <fstream>
38 #include <iomanip>
39 
40 namespace Gyoto{
41  namespace Astrobj { class PageThorneDisk; }
42 }
43 
44 //#include <GyotoMetric.h>
45 #include <GyotoThinDisk.h>
46 
64 : public Astrobj::ThinDisk,
65  public Hook::Listener
66 {
67  friend class Gyoto::SmartPointer<Gyoto::Astrobj::PageThorneDisk>;
68  private:
69  double aa_;
70  double aa2_;
71  double x0_;
72  double x1_;
73  double x2_;
74  double x3_;
75  int rednoise_;
76  int uniflux_;
77 
78  // Constructors - Destructor
79  // -------------------------
80  public:
81 
82  PageThorneDisk();
83 
84  PageThorneDisk(const PageThorneDisk& ) ;
85  virtual PageThorneDisk* clone () const;
86 
87  virtual ~PageThorneDisk() ;
88 
89  // Accessors
90  // ---------
91  public:
92  virtual void setMetric(SmartPointer<Metric::Generic>);
94 
95  virtual void updateSpin() ;
97 
98  public:
99  using ThinDisk::emission;
104  virtual double emission(double nu_em, double dsem,
105  double c_ph[8], double c_obj[8]) const;
106 
112  virtual double bolometricEmission(double dsem,
113  double c_obj[8]) const;
114 
121  virtual void processHitQuantities(Photon* ph, double* coord_ph_hit,
122  double* coord_obj_hit, double dt,
123  Astrobj::Properties* data) const;
124 
125  int setParameter(std::string name,
126  std::string content,
127  std::string unit);
128 
130 
131  // Hook::Listener API //
132  public:
140  virtual void tell(Gyoto::Hook::Teller *msg);
141 
142  public:
143 #ifdef GYOTO_USE_XERCES
144  virtual void fillElement(FactoryMessenger *fmp) const ;
145 #endif
146 
147 };
148 
149 #endif