Gyoto
GyotoPageThorneDisk.h
Go to the documentation of this file.
1 
14 /*
15  Copyright 2011-2015 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  bool uniflux_;
79  SmartPointer<Spectrum::BlackBody> spectrumBB_;
80 
82  // Constructors - Destructor
83  // -------------------------
84  public:
86 
87  PageThorneDisk();
88 
89  PageThorneDisk(const PageThorneDisk& ) ;
90  virtual PageThorneDisk* clone () const;
91 
92  virtual ~PageThorneDisk() ;
93 
94  // Accessors
95  // ---------
96  public:
97  using ThinDisk::metric;
98  virtual void metric(SmartPointer<Metric::Generic>);
100 
102  void BlackbodyMdot(double v);
103  double BlackbodyMdot() const;
104  void blackBody(bool t) ;
105  bool blackBody() const ;
106  void uniFlux(bool t) ;
107  bool uniFlux() const ;
108 
109  private:
110  virtual void updateSpin() ;
112 
113  public:
114  using ThinDisk::emission;
119  virtual double emission(double nu_em, double dsem,
120  double c_ph[8], double c_obj[8]=NULL) const;
121 
127 virtual double bolometricEmission(double nuem, double dsem,
128  double c_obj[8]) const;
129 
136  virtual void processHitQuantities(Photon* ph, double* coord_ph_hit,
137  double* coord_obj_hit, double dt,
138  Astrobj::Properties* data) const;
139 
141 
142  // Hook::Listener API //
143  public:
151  virtual void tell(Gyoto::Hook::Teller *msg);
152 
153 };
154 
155 #endif
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:83
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
void BlackbodyMdot(double v)
Set mdot_ to v, and blackbody_ to true.
virtual double bolometricEmission(double nuem, double dsem, double c_obj[8]) const
Bolometric emission.
double x1_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:73
virtual void tell(Gyoto::Hook::Teller *msg)
Update PageThorneDisk::aa_.
virtual double emission(double nu_em, double dsem, double c_ph[8], double c_obj[8]=NULL) const
Not implemented Throws a Gyoto::Error.
bool uniflux_
Flag for uniform flux = 1.
Definition: GyotoPageThorneDisk.h:78
double x3_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:75
double aa_
Generic::gg_ spin parameter, monitored by tell()
Definition: GyotoPageThorneDisk.h:70
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...
virtual double emission(double nu_em, double dsem, double coord_ph[8], double coord_obj[8]=NULL) const
Specific intensity Iν
virtual PageThorneDisk * clone() const
Cloner.
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
double x0_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:72
Geometrically thin disks and rings.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
double mdot_
accretion rate (for BB spectrum computation)
Definition: GyotoPageThorneDisk.h:77
unsigned int Quantity_t
Type for observabke quantities.
Definition: GyotoDefs.h:73
Pointers performing reference counting.
Definition: GyotoProperty.h:41
I might listen to a Teller.
Definition: GyotoHooks.h:64
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
Gyoto::Quantity_t getDefaultQuantities()
Which quantities to compute if know was requested.
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