Gyoto
GyotoPageThorneDisk.h
Go to the documentation of this file.
1 
14 /*
15  Copyright 2011-2016, 2018 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 {
69  private:
70  double aa_;
71  double aa2_;
72  double x0_;
73  double x1_;
74  double x2_;
75  double x3_;
76  double mdot_;
77  bool uniflux_;
78  SmartPointer<Spectrum::BlackBody> spectrumBB_;
79 
81  // Constructors - Destructor
82  // -------------------------
83  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 mdot(double v);
103  double mdot() const;
104  void uniFlux(bool t) ;
105  bool uniFlux() const ;
106 
107  private:
108  virtual void updateSpin() ;
110 
111  public:
112  using ThinDisk::emission;
117  virtual double emission(double nu_em, double dsem,
118  state_t const &c_ph, double const c_obj[8]=NULL) const;
119 
125  virtual double bolometricEmission(double nuem, double dsem,
126  double const c_obj[8]) const;
127 
134  virtual void processHitQuantities(Photon* ph, state_t const &coord_ph_hit,
135  double const *coord_obj_hit, double dt,
136  Astrobj::Properties* data) const;
137 
139 
140  // Hook::Listener API //
141  public:
149  virtual void tell(Gyoto::Hook::Teller *msg);
150 
151 };
152 
153 #endif
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
SmartPointer< Spectrum::BlackBody > spectrumBB_
emission law
Definition: GyotoPageThorneDisk.h:78
double x2_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:74
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition: GyotoObject.h:99
double x1_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:73
virtual void processHitQuantities(Photon *ph, state_t const &coord_ph_hit, double const *coord_obj_hit, double dt, Astrobj::Properties *data) const
processHitQuantities fills the requested data in Impact. For PageThorneDisk, only fill User4...
virtual void tell(Gyoto::Hook::Teller *msg)
Update PageThorneDisk::aa_.
bool uniflux_
Flag for uniform flux = 1.
Definition: GyotoPageThorneDisk.h:77
double x3_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:75
double aa_
Generic::gg_ spin parameter, monitored by tell()
Definition: GyotoPageThorneDisk.h:70
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
virtual double emission(double nu_em, double dsem, state_t const &c_ph, double const c_obj[8]=NULL) const
Not implemented Throws a Gyoto::Error.
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:76
unsigned int Quantity_t
Type for observabke quantities.
Definition: GyotoDefs.h:76
virtual double bolometricEmission(double nuem, double dsem, double const c_obj[8]) const
Bolometric emission.
Pointers performing reference counting.
Definition: GyotoProperty.h:45
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
virtual double emission(double nu_em, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
Specific intensity Iν
void mdot(double v)
Set mdot_ to v.