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_;
76 double mdot_;
77 bool uniflux_;
78 SmartPointer<Spectrum::BlackBody> spectrumBB_;
80
81 // Constructors - Destructor
82 // -------------------------
83 public:
86
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 virtual void radiativeQ(double *Inu, double *Qnu, double *Unu, double *Vnu,
152 Eigen::Matrix4d *Onu,
153 double const *nuem , size_t nbnu, double dsem,
154 state_t const &cph, double const *co) const;
155
156};
157
158#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
void mdot(double v)
Set mdot_ to v.
virtual void radiativeQ(double *Inu, double *Qnu, double *Unu, double *Vnu, Eigen::Matrix4d *Onu, double const *nuem, size_t nbnu, double dsem, state_t const &cph, double const *co) const
Compute the increment of Stokes parameters and transmission matrix. Polarised version of RadiaveQ.
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::Quantity_t getDefaultQuantities()
Which quantities to compute if know was requested.
double aa2_
aa_2
Definition GyotoPageThorneDisk.h:71
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:78
bool uniflux_
Flag for uniform flux = 1.
Definition GyotoPageThorneDisk.h:77
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:76
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:44
unsigned int Quantity_t
Type for observabke quantities.
Definition GyotoDefs.h:76