Gyoto
GyotoDynamicalDisk3D.h
Go to the documentation of this file.
1 
9 /*
10  Copyright 2011-2016, 2018 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 
60  protected:
61  SmartPointer<Spectrum::BlackBody> spectrumBB_;
62  private:
64  bool temperature_;
65  char* dirname_;
66  double tinit_;
67  double dt_;
68  int nb_times_;
69  double PLindex_;
70  bool novel_;
72 
78  double ** emission_array_;
79 
85  double ** absorption_array_;
86 
93  double ** velocity_array_;
94 
95  // Constructors - Destructor
96  // -------------------------
97  public:
100 
101  DynamicalDisk3D();
102 
103  DynamicalDisk3D(const DynamicalDisk3D& ) ;
104  virtual DynamicalDisk3D* clone () const;
105 
106  virtual ~DynamicalDisk3D() ;
107 
108  // Accessors
109  // ---------
110  public:
111  using Generic::metric;
112  void metric(SmartPointer<Metric::Generic> gg);
113  void file(std::string const &f);
114  std::string file() const;
115  void tinit(double t);
116  double tinit()const;
117  void dt(double t);
118  double dt()const;
119  void PLindex(double t);
120  double PLindex()const;
121  void floorTemperature(double t);
122  double floorTemperature()const;
123  void temperature(bool t);
124  bool temperature() const;
125  void withVelocity(bool t);
126  bool withVelocity() const;
127 
128  // Stuff
129  // -----
131  double emission1date(double nu_em, double dsem,
132  state_t const &c_ph, double const c_obj[8]) const;
133 
134  using Disk3D::emission;
136  virtual double emission(double nu_em, double dsem,
137  state_t const &c_ph, double const c_obj[8]=NULL) const;
138 
140  double transmission1date(double nu_em, double dsem,
141  state_t const &c_ph, double const c_obj[8]) const;
142 
144  double transmission(double nu_em, double dsem,
145  state_t const &cph, double const co[8]) const;
146 
147  void getVelocity(double const pos[4], double vel[4]);
148  double const * getVelocity() const;
149 
150  protected:
151 
153 
156  void copyQuantities(int iq) ;
157 
158 };
159 
160 #endif
Geometrically thick disk read from FITS file.
Definition: GyotoDisk3D.h:56
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
double emission1date(double nu_em, double dsem, state_t const &c_ph, double const c_obj[8]) const
Compute emission at one grid date.
char * dirname_
FITS files directory.
Definition: GyotoDynamicalDisk3D.h:65
double dt_
Time increment between two FITS (assumed constant)
Definition: GyotoDynamicalDisk3D.h:67
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition: GyotoObject.h:99
int nb_times_
Number of times.
Definition: GyotoDynamicalDisk3D.h:68
double ** velocity_array_
velocity(r, z, phi)
Definition: GyotoDynamicalDisk3D.h:93
bool novel_
put to true if velocity of emitting particle is not provided
Definition: GyotoDynamicalDisk3D.h:70
double const * getVelocity() const
Get Disk3D::velocity_.
double transmission1date(double nu_em, double dsem, state_t const &c_ph, double const c_obj[8]) const
Compute transmission at one grid date.
double PLindex_
power law index such that density_elec(E) ∝ E-p
Definition: GyotoDynamicalDisk3D.h:69
double transmission(double nu_em, double dsem, state_t const &cph, double const co[8]) const
Interpolate transmission between grid dates.
A geometrically thick, optically thin disk.
virtual double emission(double nu_em, double dsem, state_t const &c_ph, double const c_obj[8]=NULL) const
Interpolate emission between grid dates.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
double floortemperature_
if non-zero, emission and absorption are 0 for temperatures below this floor, emission=blackbody and ...
Definition: GyotoDynamicalDisk3D.h:71
Pointers performing reference counting.
Definition: GyotoProperty.h:45
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
bool temperature_
1 if temperature is given in fits data file, 0 if emission coef is directly given ...
Definition: GyotoDynamicalDisk3D.h:64
Geometrically thick optically thin disk read from a set of FITS files.
Definition: GyotoDynamicalDisk3D.h:58
SmartPointer< Spectrum::BlackBody > spectrumBB_
emission law
Definition: GyotoDynamicalDisk3D.h:61
I_nu(nu, T) = cst_*2*h*nu^3/c^2/(exp(h*nu/k*T)-1.);.
double ** absorption_array_
Definition: GyotoDynamicalDisk3D.h:85
double ** emission_array_
Definition: GyotoDynamicalDisk3D.h:78
virtual DynamicalDisk3D * clone() const
Cloner.
virtual double emission(double nu_em, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
Specific intensity Iν
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.