Gyoto
GyotoTorus.h
Go to the documentation of this file.
1
7/*
8 Copyright 2011, 2018 Thibaut Paumard
9
10 This file is part of Gyoto.
11
12 Gyoto is free software: you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation, either version 3 of the License, or
15 (at your option) any later version.
16
17 Gyoto is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 GNU General Public License for more details.
21
22 You should have received a copy of the GNU General Public License
23 along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
24 */
25
26#ifndef __GyotoTorus_H_
27#define __GyotoTorus_H_
28
29#include <iostream>
30#include <fstream>
31#include <iomanip>
32#include <string>
33
34namespace Gyoto{
35 namespace Astrobj { class Torus; }
36}
37
39#include <GyotoSpectrum.h>
41#include <GyotoUtils.h>
42
52
53
54 // Data :
55 // -----
56 protected:
62 double c_;
63
64 SmartPointer<Spectrum::Generic> spectrum_;
65 SmartPointer<Spectrum::Generic> opacity_;
66 SmartPointer<Spectrum::ThermalSynchrotron> spectrumThermalSynch_;
67
68 // Constructors - Destructor
69 // -------------------------
70 public:
76
77 Torus(const Torus& ) ;
78 virtual Torus* clone() const;
79
80 virtual ~Torus() ;
81
82 // Accessors
83 // ---------
84 public:
88 double largeRadius() const;
89
93 double largeRadius(std::string unit) const;
94
98 double smallRadius() const;
99
103 double smallRadius(std::string unit) const;
104
108 void largeRadius(double c);
109
113 void smallRadius(double a);
114
118 void largeRadius(double c, std::string unit);
119
123 void smallRadius(double a, std::string unit);
124
128 virtual void spectrum(SmartPointer<Spectrum::Generic>);
129
133 virtual SmartPointer<Spectrum::Generic> spectrum() const;
134
138 virtual void opacity(SmartPointer<Spectrum::Generic>);
139
143 virtual SmartPointer<Spectrum::Generic> opacity() const;
144
145 using Standard::rMax;
146 virtual double rMax();
147
148 // Outputs
149 // -------
150 public:
151 virtual double operator()(double const coord[4]) ;
152 virtual double deltaMax(double*);
153
154 protected:
155 virtual void getVelocity(double const pos[4], double vel[4]) ;
156
157 using Standard::emission;
158 virtual double emission(double nu_em, double dsem, state_t const &coord_ph,
159 double const coord_obj[8]=NULL) const ;
161 virtual double integrateEmission(double nu1, double nu2, double dsem,
162 state_t const &c_ph, double const c_obj[8]=NULL) const;
163
164 virtual double transmission(double nuem, double dsem, state_t const &, double const *) const ;
165
166 virtual void radiativeQ(double Inu[], double Taunu[],
167 double const nu_em[], size_t nbnu,
168 double dsem, state_t const &coord_ph,
169 double const coord_obj[8]=NULL) const ;
170
171};
172
173#endif
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
Spectrum of a simple object (e.g. Star)
Astronomical objects defined bya a potential/distance.
Thermal synchrotron spectrum.
GYOTO utilities.
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ν)
virtual double emission(double nu_em, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
Specific intensity Iν
virtual double rMax()
Get maximal distance from center of coordinate system.
Astronomical objects defined bya a potential/distance.
Definition: GyotoStandardAstrobj.h:87
Optically thin or thick torus in circular rotation.
Definition: GyotoTorus.h:50
SmartPointer< Spectrum::Generic > opacity_
Absorption law.
Definition: GyotoTorus.h:65
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ν)
double c_
Large Radius.
Definition: GyotoTorus.h:62
virtual Torus * clone() const
"Virtual" copy constructor
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
SmartPointer< Spectrum::Generic > spectrum_
Emission law.
Definition: GyotoTorus.h:64
virtual double emission(double nu_em, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
Specific intensity Iν
double largeRadius() const
virtual SmartPointer< Spectrum::Generic > spectrum() const
Get Torus::spectrum_.
virtual SmartPointer< Spectrum::Generic > opacity() const
Get Torus::opacity_.
double smallRadius() const
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
virtual double rMax()
Get maximal distance from center of coordinate system.
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:135
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43