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
40namespace Gyoto{
41 namespace Astrobj { class PageThorneDisk; }
42}
43
44//#include <GyotoMetric.h>
45#include <GyotoThinDisk.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_;
77 double mdot_;
78 bool uniflux_;
79 SmartPointer<Spectrum::BlackBody> spectrumBB_;
81
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
I_nu(nu, T) = cst_*2*h*nu^3/c^2/(exp(h*nu/k*T)-1.);.
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition: GyotoObject.h:99
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
Geometrically thin disks and rings.
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
virtual double emission(double nu_em, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
Specific intensity Iν
Geometrically thin disk in Kerr metric.
Definition: GyotoPageThorneDisk.h:67
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.
void BlackbodyMdot(double v)
Set mdot_ to v, and blackbody_ to true.
Gyoto::Quantity_t getDefaultQuantities()
Which quantities to compute if know was requested.
double aa2_
aa_2
Definition: GyotoPageThorneDisk.h:71
int blackbody_
Flag for computing BB flux (for spectra)
Definition: GyotoPageThorneDisk.h:76
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 PageThorneDisk * clone() const
Cloner.
SmartPointer< Spectrum::BlackBody > spectrumBB_
emission law
Definition: GyotoPageThorneDisk.h:79
bool uniflux_
Flag for uniform flux = 1.
Definition: GyotoPageThorneDisk.h:78
virtual double bolometricEmission(double nuem, double dsem, double const c_obj[8]) const
Bolometric emission.
double x0_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:72
virtual void tell(Gyoto::Hook::Teller *msg)
Update PageThorneDisk::aa_.
double x2_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:74
virtual void updateSpin()
Get spin from metric, which must be KerrBL or KerrKS.
double aa_
Generic::gg_ spin parameter, monitored by tell()
Definition: GyotoPageThorneDisk.h:70
double x3_
Value cached for bolometricEmission()
Definition: GyotoPageThorneDisk.h:75
double mdot_
accretion rate (for BB spectrum computation)
Definition: GyotoPageThorneDisk.h:77
Geometrically thin disks and rings.
Definition: GyotoThinDisk.h:71
I might listen to a Teller.
Definition: GyotoHooks.h:64
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:135
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
unsigned int Quantity_t
Type for observabke quantities.
Definition: GyotoDefs.h:76