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 #include <GyotoBlackBodySpectrum.h>
47 
65 : public Astrobj::ThinDisk,
66  public Hook::Listener
67 {
68  friend class Gyoto::SmartPointer<Gyoto::Astrobj::PageThorneDisk>;
69  private:
70  double aa_;
71  double aa2_;
72  double x0_;
73  double x1_;
74  double x2_;
75  double x3_;
76  int blackbody_;
77  double mdot_;
78  int uniflux_;
79  SmartPointer<Spectrum::BlackBody> spectrumBB_;
80 
82  // Constructors - Destructor
83  // -------------------------
84  public:
85 
86  PageThorneDisk();
87 
88  PageThorneDisk(const PageThorneDisk& ) ;
89  virtual PageThorneDisk* clone () const;
90 
91  virtual ~PageThorneDisk() ;
92 
93  // Accessors
94  // ---------
95  public:
96  using ThinDisk::metric;
97  virtual void metric(SmartPointer<Metric::Generic>);
99 
100  private:
101  virtual void updateSpin() ;
103 
104  public:
105  using ThinDisk::emission;
110  virtual double emission(double nu_em, double dsem,
111  double c_ph[8], double c_obj[8]) const;
112 
118 virtual double bolometricEmission(double nuem, double dsem,
119  double c_obj[8]) const;
120 
127  virtual void processHitQuantities(Photon* ph, double* coord_ph_hit,
128  double* coord_obj_hit, double dt,
129  Astrobj::Properties* data) const;
130 
131  int setParameter(std::string name,
132  std::string content,
133  std::string unit);
134 
136 
137  // Hook::Listener API //
138  public:
146  virtual void tell(Gyoto::Hook::Teller *msg);
147 
148  public:
149 #ifdef GYOTO_USE_XERCES
150  virtual void fillElement(FactoryMessenger *fmp) const ;
151 #endif
152 
153 };
154 
155 #endif
Quantity_t getDefaultQuantities()
Which quantities to compute if know was requested.
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:51
int blackbody_
Flag for computing BB flux (for spectra)
Definition: GyotoPageThorneDisk.h:76
SmartPointer< Spectrum::BlackBody > spectrumBB_
emission law
Definition: GyotoPageThorneDisk.h:79
double x2_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:74
int setParameter(std::string name, std::string content, std::string unit)
Set parameter by name.
virtual double emission(double nu_em, double dsem, double coord_ph[8], double coord_obj[8]=NULL) const
Specific intensity Iν
double x1_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:73
virtual void tell(Gyoto::Hook::Teller *msg)
Update PageThorneDisk::aa_.
virtual PageThorneDisk * clone() const
Cloner.
virtual double bolometricEmission(double nuem, double dsem, double c_obj[8]) const
Bolometric emission.
double x3_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:75
virtual void processHitQuantities(Photon *ph, double *coord_ph_hit, double *coord_obj_hit, double dt, Astrobj::Properties *data) const
processHitQuantities fills the requested data in Impact. For PageThorneDisk, only fill User4...
double aa_
Generic::gg_ spin parameter, monitored by tell()
Definition: GyotoPageThorneDisk.h:70
Geometrically thin disks and rings.
Definition: GyotoThinDisk.h:68
virtual void updateSpin()
Get spin from metric, which must be KerrBL or KerrKS.
Geometrically thin disk in Kerr metric.
Definition: GyotoPageThorneDisk.h:64
int uniflux_
Flag for uniform flux = 1.
Definition: GyotoPageThorneDisk.h:78
double x0_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:72
Geometrically thin disks and rings.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:42
double mdot_
accretion rate (for BB spectrum computation)
Definition: GyotoPageThorneDisk.h:77
unsigned int Quantity_t
Type for observabke quantities.
Definition: GyotoDefs.h:73
virtual void fillElement(FactoryMessenger *fmp) const
called from Factory
virtual double emission(double nu_em, double dsem, double c_ph[8], double c_obj[8]) const
Not implemented Throws a Gyoto::Error.
I might listen to a Teller.
Definition: GyotoHooks.h:64
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
I_nu(nu, T) = cst_*2*h*nu^3/c^2/(exp(h*nu/k*T)-1.);.
double aa2_
aa_2
Definition: GyotoPageThorneDisk.h:71