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 
34 namespace Gyoto{
35  namespace Astrobj { class Torus; }
36 }
37 
38 #include <GyotoStandardAstrobj.h>
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:
75  Torus();
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
virtual SmartPointer< Spectrum::Generic > opacity() const
Get Torus::opacity_.
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
virtual SmartPointer< Spectrum::Generic > spectrum() const
Get Torus::spectrum_.
virtual double emission(double nu_em, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
Specific intensity Iν
Thermal synchrotron spectrum.
double c_
Large Radius.
Definition: GyotoTorus.h:62
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ν)
SmartPointer< Spectrum::Generic > opacity_
Absorption law.
Definition: GyotoTorus.h:65
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
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ν)
Optically thin or thick torus in circular rotation.
Definition: GyotoTorus.h:50
virtual double rMax()
Get maximal distance from center of coordinate system.
Astronomical objects defined bya a potential/distance.
double largeRadius() 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.
Spectrum of a simple object (e.g. Star)
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
Pointers performing reference counting.
Definition: GyotoProperty.h:45
GYOTO utilities.
SmartPointer< Spectrum::Generic > spectrum_
Emission law.
Definition: GyotoTorus.h:64
Astronomical objects defined bya a potential/distance.
Definition: GyotoStandardAstrobj.h:84
virtual double emission(double nu_em, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
Specific intensity Iν
double smallRadius() const
virtual Torus * clone() const
"Virtual" copy constructor