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  int blackbody_;
77  double mdot_;
78  bool uniflux_;
79  SmartPointer<Spectrum::BlackBody> spectrumBB_;
80 
82  // Constructors - Destructor
83  // -------------------------
84  public:
87 
89 
90  PageThorneDisk(const PageThorneDisk& ) ;
91  virtual PageThorneDisk* clone () const;
92 
93  virtual ~PageThorneDisk() ;
94 
95  // Accessors
96  // ---------
97  public:
98  using ThinDisk::metric;
99  virtual void metric(SmartPointer<Metric::Generic>);
101 
103  void BlackbodyMdot(double v);
104  double BlackbodyMdot() const;
105  void blackBody(bool t) ;
106  bool blackBody() const ;
107  void uniFlux(bool t) ;
108  bool uniFlux() const ;
109 
110  private:
111  virtual void updateSpin() ;
113 
114  public:
115  using ThinDisk::emission;
120  virtual double emission(double nu_em, double dsem,
121  state_t const &c_ph, double const c_obj[8]=NULL) const;
122 
128  virtual double bolometricEmission(double nuem, double dsem,
129  double const c_obj[8]) const;
130 
137  virtual void processHitQuantities(Photon* ph, state_t const &coord_ph_hit,
138  double const *coord_obj_hit, double dt,
139  Astrobj::Properties* data) const;
140 
142 
143  // Hook::Listener API //
144  public:
152  virtual void tell(Gyoto::Hook::Teller *msg);
153 
154 };
155 
156 #endif
Gyoto::Hook::Listener
I might listen to a Teller.
Definition: GyotoHooks.h:64
GYOTO_OBJECT
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
Gyoto::Astrobj::PageThorneDisk::aa2_
double aa2_
aa_2
Definition: GyotoPageThorneDisk.h:71
Gyoto::Astrobj::PageThorneDisk::spectrumBB_
SmartPointer< Spectrum::BlackBody > spectrumBB_
emission law
Definition: GyotoPageThorneDisk.h:79
GYOTO_OBJECT_THREAD_SAFETY
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition: GyotoObject.h:99
Gyoto::Astrobj::PageThorneDisk::updateSpin
virtual void updateSpin()
Get spin from metric, which must be KerrBL or KerrKS.
Gyoto::Astrobj::PageThorneDisk::aa_
double aa_
Generic::gg_ spin parameter, monitored by tell()
Definition: GyotoPageThorneDisk.h:70
Gyoto::Astrobj::PageThorneDisk::x1_
double x1_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:73
Gyoto::Astrobj::PageThorneDisk::tell
virtual void tell(Gyoto::Hook::Teller *msg)
Update PageThorneDisk::aa_.
Gyoto::Astrobj::ThinDisk
Geometrically thin disks and rings.
Definition: GyotoThinDisk.h:71
Gyoto::Astrobj::PageThorneDisk::bolometricEmission
virtual double bolometricEmission(double nuem, double dsem, double const c_obj[8]) const
Bolometric emission.
Gyoto::Astrobj::PageThorneDisk::blackbody_
int blackbody_
Flag for computing BB flux (for spectra)
Definition: GyotoPageThorneDisk.h:76
Gyoto::Astrobj::PageThorneDisk::x0_
double x0_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:72
Gyoto::Astrobj::PageThorneDisk::x3_
double x3_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:75
Gyoto::Astrobj::PageThorneDisk
Geometrically thin disk in Kerr metric.
Definition: GyotoPageThorneDisk.h:67
GyotoThinDisk.h
Geometrically thin disks and rings.
Gyoto::Astrobj::PageThorneDisk::processHitQuantities
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,...
Gyoto::Astrobj::PageThorneDisk::x2_
double x2_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:74
Gyoto
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
Gyoto::Astrobj::Generic::emission
virtual double emission(double nu_em, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
Specific intensity Iν
Gyoto::Astrobj::PageThorneDisk::emission
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.
Gyoto::SmartPointer
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:135
Gyoto::Quantity_t
unsigned int Quantity_t
Type for observabke quantities.
Definition: GyotoDefs.h:76
Gyoto::Astrobj::PageThorneDisk::mdot_
double mdot_
accretion rate (for BB spectrum computation)
Definition: GyotoPageThorneDisk.h:77
Gyoto::Astrobj::PageThorneDisk::getDefaultQuantities
Gyoto::Quantity_t getDefaultQuantities()
Which quantities to compute if know was requested.
Gyoto::Astrobj::PageThorneDisk::uniflux_
bool uniflux_
Flag for uniform flux = 1.
Definition: GyotoPageThorneDisk.h:78
Gyoto::Astrobj::PageThorneDisk::BlackbodyMdot
void BlackbodyMdot(double v)
Set mdot_ to v, and blackbody_ to true.
Gyoto::Astrobj::PageThorneDisk::clone
virtual PageThorneDisk * clone() const
Cloner.
GyotoBlackBodySpectrum.h
I_nu(nu, T) = cst_*2*h*nu^3/c^2/(exp(h*nu/k*T)-1.);.
Gyoto::Astrobj::Generic::metric
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.