GyotoPageThorneDisk.h
Go to the documentation of this file.
/*
Copyright 2011-2016, 2018 Frederic Vincent, Thibaut Paumard
This file is part of Gyoto.
Gyoto is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gyoto is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GyotoPageThorneDisk_H_
#define __GyotoPageThorneDisk_H_
#include <iostream>
#include <fstream>
#include <iomanip>
namespace Gyoto{
namespace Astrobj { class PageThorneDisk; }
}
//#include <GyotoMetric.h>
#include <GyotoThinDisk.h>
#include <GyotoBlackBodySpectrum.h>
class Gyoto::Astrobj::PageThorneDisk
: public Astrobj::ThinDisk,
public Hook::Listener
{
friend class Gyoto::SmartPointer<Gyoto::Astrobj::PageThorneDisk>;
private:
double aa_;
double aa2_;
double x0_;
double x1_;
double x2_;
double x3_;
double mdot_;
bool uniflux_;
SmartPointer<Spectrum::BlackBody> spectrumBB_;
// Constructors - Destructor
// -------------------------
public:
GYOTO_OBJECT;
GYOTO_OBJECT_THREAD_SAFETY;
PageThorneDisk();
PageThorneDisk(const PageThorneDisk& ) ;
virtual PageThorneDisk* clone () const;
virtual ~PageThorneDisk() ;
// Accessors
// ---------
public:
using ThinDisk::metric;
virtual void metric(SmartPointer<Metric::Generic>);
void mdot(double v);
double mdot() const;
void uniFlux(bool t) ;
bool uniFlux() const ;
private:
virtual void updateSpin() ;
public:
using ThinDisk::emission;
virtual double emission(double nu_em, double dsem,
state_t const &c_ph, double const c_obj[8]=NULL) const;
virtual double bolometricEmission(double nuem, double dsem,
double const c_obj[8]) const;
virtual void processHitQuantities(Photon* ph, state_t const &coord_ph_hit,
double const *coord_obj_hit, double dt,
Astrobj::Properties* data) const;
Gyoto::Quantity_t getDefaultQuantities();
// Hook::Listener API //
public:
virtual void tell(Gyoto::Hook::Teller *msg);
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;
};
#endif
GyotoBlackBodySpectrum.h
I_nu(nu, T) = cst_*2*h*nu^3/c^2/(exp(h*nu/k*T)-1.);.
GYOTO_OBJECT
#define GYOTO_OBJECT
Declare class::properties and class::getProperties().
Definition GyotoObject.h:84
GyotoThinDisk.h
Geometrically thin disks and rings.
Gyoto::Astrobj::Generic::metric
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
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
Geometrically thin disk in Kerr metric.
Definition GyotoPageThorneDisk.h:67
Gyoto::Astrobj::PageThorneDisk::mdot
void mdot(double v)
Set mdot_ to v.
Gyoto::Astrobj::PageThorneDisk::radiativeQ
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.
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::Astrobj::PageThorneDisk::getDefaultQuantities
Gyoto::Quantity_t getDefaultQuantities()
Which quantities to compute if know was requested.
Gyoto::Astrobj::PageThorneDisk::aa2_
double aa2_
aa_2
Definition GyotoPageThorneDisk.h:71
Gyoto::Astrobj::PageThorneDisk::x1_
double x1_
Value cached for bolometricEmission().
Definition GyotoPageThorneDisk.h:73
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::PageThorneDisk
PageThorneDisk()
Standard constructor.
Gyoto::Astrobj::PageThorneDisk::clone
virtual PageThorneDisk * clone() const
Cloner.
Gyoto::Astrobj::PageThorneDisk::spectrumBB_
SmartPointer< Spectrum::BlackBody > spectrumBB_
emission law
Definition GyotoPageThorneDisk.h:78
Gyoto::Astrobj::PageThorneDisk::uniflux_
bool uniflux_
Flag for uniform flux = 1.
Definition GyotoPageThorneDisk.h:77
Gyoto::Astrobj::PageThorneDisk::bolometricEmission
virtual double bolometricEmission(double nuem, double dsem, double const c_obj[8]) const
Bolometric emission.
Gyoto::Astrobj::PageThorneDisk::x0_
double x0_
Value cached for bolometricEmission().
Definition GyotoPageThorneDisk.h:72
Gyoto::Astrobj::PageThorneDisk::tell
virtual void tell(Gyoto::Hook::Teller *msg)
Update PageThorneDisk::aa_.
Gyoto::Astrobj::PageThorneDisk::x2_
double x2_
Value cached for bolometricEmission().
Definition GyotoPageThorneDisk.h:74
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::metric
virtual void metric(SmartPointer< Metric::Generic >)
Set metric, checking that it is either KerrBL or KerrKS.
Gyoto::Astrobj::PageThorneDisk::x3_
double x3_
Value cached for bolometricEmission().
Definition GyotoPageThorneDisk.h:75
Gyoto::Astrobj::PageThorneDisk::mdot_
double mdot_
accretion rate (for BB spectrum computation)
Definition GyotoPageThorneDisk.h:76
Gyoto::Astrobj::ThinDisk
Geometrically thin disks and rings.
Definition GyotoThinDisk.h:71
Gyoto::Hook::Listener
I might listen to a Teller.
Definition GyotoHooks.h:64
Gyoto::SmartPointer
Pointers performing reference counting.
Definition GyotoSmartPointer.h:135
Gyoto::Astrobj
Access to astronomical objects.
Definition GyotoAstrobj.h:49
Gyoto
Namespace for the Gyoto library.
Definition GyotoAstrobj.h:44
Gyoto::Quantity_t
unsigned int Quantity_t
Type for observabke quantities.
Definition GyotoDefs.h:76