GyotoTorus.h
Go to the documentation of this file.
/*
Copyright 2011, 2018 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 __GyotoTorus_H_
#define __GyotoTorus_H_
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
namespace Gyoto{
namespace Astrobj { class Torus; }
}
#include <GyotoStandardAstrobj.h>
#include <GyotoSpectrum.h>
#include <GyotoThermalSynchrotronSpectrum.h>
#include <GyotoUtils.h>
class Gyoto::Astrobj::Torus : public Gyoto::Astrobj::Standard {
friend class Gyoto::SmartPointer<Gyoto::Astrobj::Torus>;
// Data :
// -----
protected:
double c_;
SmartPointer<Spectrum::Generic> spectrum_;
SmartPointer<Spectrum::Generic> opacity_;
SmartPointer<Spectrum::ThermalSynchrotron> spectrumThermalSynch_;
// Constructors - Destructor
// -------------------------
public:
GYOTO_OBJECT;
Torus();
Torus(const Torus& ) ;
virtual Torus* clone() const;
virtual ~Torus() ;
// Accessors
// ---------
public:
double largeRadius() const;
double largeRadius(std::string unit) const;
double smallRadius() const;
double smallRadius(std::string unit) const;
void largeRadius(double c);
void smallRadius(double a);
void largeRadius(double c, std::string unit);
void smallRadius(double a, std::string unit);
virtual void spectrum(SmartPointer<Spectrum::Generic>);
virtual SmartPointer<Spectrum::Generic> spectrum() const;
virtual void opacity(SmartPointer<Spectrum::Generic>);
virtual SmartPointer<Spectrum::Generic> opacity() const;
using Standard::rMax;
virtual double rMax();
// Outputs
// -------
public:
virtual double operator()(double const coord[4]) ;
virtual double deltaMax(double*);
protected:
virtual void getVelocity(double const pos[4], double vel[4]) ;
using Standard::emission;
virtual double emission(double nu_em, double dsem, state_t const &coord_ph,
double const coord_obj[8]=NULL) const ;
using Standard::integrateEmission;
virtual double integrateEmission(double nu1, double nu2, double dsem,
state_t const &c_ph, double const c_obj[8]=NULL) const;
virtual double transmission(double nuem, double dsem, state_t const &, double const *) const ;
virtual void radiativeQ(double Inu[], double Taunu[],
double const nu_em[], size_t nbnu,
double dsem, state_t const &coord_ph,
double const coord_obj[8]=NULL) const ;
};
#endif
GYOTO_OBJECT
#define GYOTO_OBJECT
Declare class::properties and class::getProperties().
Definition GyotoObject.h:84
GyotoSpectrum.h
Spectrum of a simple object (e.g. Star).
GyotoStandardAstrobj.h
Astronomical objects defined bya a potential/distance.
GyotoThermalSynchrotronSpectrum.h
Thermal synchrotron spectrum.
GyotoUtils.h
GYOTO utilities.
Gyoto::Astrobj::Generic::integrateEmission
virtual double integrateEmission(double nu1, double nu2, double dsem, state_t const &c_ph, double const c_obj[8]=NULL) const
∫ν1ν2 Iν dν (or jν)
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::Generic::rMax
virtual double rMax()
Get maximal distance from center of coordinate system.
Gyoto::Astrobj::Standard
Astronomical objects defined bya a potential/distance.
Definition GyotoStandardAstrobj.h:87
Gyoto::Astrobj::Torus
Optically thin or thick torus in circular rotation.
Definition GyotoTorus.h:50
Gyoto::Astrobj::Torus::spectrum
virtual void spectrum(SmartPointer< Spectrum::Generic >)
Set Torus::spectrum_.
Gyoto::Astrobj::Torus::Torus
Torus()
Default constructor.
Gyoto::Astrobj::Torus::opacity_
SmartPointer< Spectrum::Generic > opacity_
Absorption law.
Definition GyotoTorus.h:65
Gyoto::Astrobj::Torus::integrateEmission
virtual double integrateEmission(double nu1, double nu2, double dsem, state_t const &c_ph, double const c_obj[8]=NULL) const
∫ν1ν2 Iν dν (or jν)
Gyoto::Astrobj::Torus::c_
double c_
Large Radius.
Definition GyotoTorus.h:62
Gyoto::Astrobj::Torus::clone
virtual Torus * clone() const
"Virtual" copy constructor
Gyoto::Astrobj::Torus::radiativeQ
virtual void radiativeQ(double Inu[], double Taunu[], double const nu_em[], size_t nbnu, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
emission and transmission together
Gyoto::Astrobj::Torus::spectrum_
SmartPointer< Spectrum::Generic > spectrum_
Emission law.
Definition GyotoTorus.h:64
Gyoto::Astrobj::Torus::opacity
virtual void opacity(SmartPointer< Spectrum::Generic >)
Set Torus::opacity_.
Gyoto::Astrobj::Torus::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::Torus::largeRadius
double largeRadius() const
Gyoto::Astrobj::Torus::smallRadius
double smallRadius() const
Gyoto::Astrobj::Torus::getVelocity
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
Gyoto::Astrobj::Torus::rMax
virtual double rMax()
Get maximal distance from center of coordinate system.
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