Gyoto
GyotoDynamicalDisk3D.h
Go to the documentation of this file.
1 
9 /*
10  Copyright 2011 Frederic Vincent, Thibaut Paumard
11 
12  This file is part of Gyoto.
13 
14  Gyoto is free software: you can redistribute it and/or modify
15  it under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  Gyoto is distributed in the hope that it will be useful,
20  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22  GNU General Public License for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
26  */
27 
28 #ifndef __GyotoDynamicalDisk3D_H_
29 #define __GyotoDynamicalDisk3D_H_
30 
31 #include <iostream>
32 #include <fstream>
33 #include <iomanip>
34 #include <cstring>
35 
36 namespace Gyoto{
37  namespace Astrobj { class DynamicalDisk3D; }
38 }
39 
40 #include <GyotoDisk3D.h>
41 #include <GyotoBlackBodySpectrum.h>
42 
59  friend class Gyoto::SmartPointer<Gyoto::Astrobj::DynamicalDisk3D>;
60  protected:
61  SmartPointer<Spectrum::BlackBody> spectrumBB_;
62  private:
65  char* dirname_;
66  double tinit_;
67  double dt_;
68  int nb_times_;
69  double PLindex_;
70  int novel_;
71 
77  double ** emission_array_;
78 
84  double ** absorption_array_;
85 
92  double ** velocity_array_;
93 
94  // Constructors - Destructor
95  // -------------------------
96  public:
97  DynamicalDisk3D();
98 
99  DynamicalDisk3D(const DynamicalDisk3D& ) ;
100  virtual DynamicalDisk3D* clone () const;
101 
102  virtual ~DynamicalDisk3D() ;
103 
104  // Accessors
105  // ---------
106  public:
107 
108  using Generic::metric;
109  void metric(SmartPointer<Metric::Generic> gg);
110  virtual int setParameter(std::string name,
111  std::string content,
112  std::string unit);
113 
115  double emission1date(double nu_em, double dsem,
116  double c_ph[8], double c_obj[8]) const;
117 
118  using Disk3D::emission;
120  virtual double emission(double nu_em, double dsem,
121  double c_ph[8], double c_obj[8]) const;
122 
124  double transmission1date(double nu_em, double dsem,
125  double c_ph[8], double c_obj[8]) const;
126 
128  double transmission(double nu_em, double dsem,
129  double c_obj[8]) const;
130 
131  void getVelocity(double const pos[4], double vel[4]);
132  double const * getVelocity() const;
133 
134  protected:
135 
137 
140  void copyQuantities(int iq) ;
141 
142  public:
143 #ifdef GYOTO_USE_XERCES
144  virtual void fillElement(FactoryMessenger *fmp) const ;
145 #endif
146 
147 };
148 
149 #endif
Geometrically thick disk read from FITS file.
Definition: GyotoDisk3D.h:56
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:51
virtual int setParameter(std::string name, std::string content, std::string unit)
Set parameter by name.
char * dirname_
FITS files directory.
Definition: GyotoDynamicalDisk3D.h:65
double dt_
Time increment between two FITS (assumed constant)
Definition: GyotoDynamicalDisk3D.h:67
int nb_times_
Number of times.
Definition: GyotoDynamicalDisk3D.h:68
virtual double emission(double nu_em, double dsem, double coord_ph[8], double coord_obj[8]=NULL) const
Specific intensity Iν
double ** velocity_array_
velocity(r, z, phi)
Definition: GyotoDynamicalDisk3D.h:92
double PLindex_
power law index such that density_elec(E) ∝ E-p
Definition: GyotoDynamicalDisk3D.h:69
A geometrically thick, optically thin disk.
virtual double emission(double nu_em, double dsem, double c_ph[8], double c_obj[8]) const
Interpolate emission between grid dates.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:42
int temperature_
1 if temperature is given in fits data file, 0 if emission coef is directly given ...
Definition: GyotoDynamicalDisk3D.h:64
double transmission(double nu_em, double dsem, double c_obj[8]) const
Interpolate transmission between grid dates.
virtual DynamicalDisk3D * clone() const
Cloner.
double emission1date(double nu_em, double dsem, double c_ph[8], double c_obj[8]) const
Compute emission at one grid date.
Geometrically thick optically thin disk read from a set of FITS files.
Definition: GyotoDynamicalDisk3D.h:58
double transmission1date(double nu_em, double dsem, double c_ph[8], double c_obj[8]) const
Compute transmission at one grid date.
SmartPointer< Spectrum::BlackBody > spectrumBB_
emission law
Definition: GyotoDynamicalDisk3D.h:61
double const * getVelocity() const
Get Disk3D::velocity_.
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
I_nu(nu, T) = cst_*2*h*nu^3/c^2/(exp(h*nu/k*T)-1.);.
double ** absorption_array_
Definition: GyotoDynamicalDisk3D.h:84
double ** emission_array_
Definition: GyotoDynamicalDisk3D.h:77
virtual void fillElement(FactoryMessenger *fmp) const
Fill XML section.
int novel_
put to 1 if velocity of emitting particle is not provided
Definition: GyotoDynamicalDisk3D.h:70
double tinit_
Time of the first FITS file.
Definition: GyotoDynamicalDisk3D.h:66
void copyQuantities(int iq)
Set underlying Disk3D pointers to a specific date slice.