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
36namespace Gyoto{
37 namespace Astrobj { class DynamicalDisk3D; }
38}
39
40#include <GyotoDisk3D.h>
42
60 protected:
61 SmartPointer<Spectrum::BlackBody> spectrumBB_;
63 private:
65 char* dirname_;
66 double tinit_;
67 double dt_;
69 double PLindex_;
70 bool novel_;
72
78 double ** emission_array_;
79
86
93 double ** velocity_array_;
94
95 // Constructors - Destructor
96 // -------------------------
97 public:
100
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
I_nu(nu, T) = cst_*2*h*nu^3/c^2/(exp(h*nu/k*T)-1.);.
A geometrically thick, optically thin disk.
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition: GyotoObject.h:99
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
Geometrically thick disk read from FITS file.
Definition: GyotoDisk3D.h:56
Geometrically thick optically thin disk read from a set of FITS files.
Definition: GyotoDynamicalDisk3D.h:58
double ** velocity_array_
velocity(r, z, phi)
Definition: GyotoDynamicalDisk3D.h:93
virtual DynamicalDisk3D * clone() const
Cloner.
double emission1date(double nu_em, double dsem, state_t const &c_ph, double const c_obj[8]) const
Compute emission at one grid date.
SmartPointer< Spectrum::BlackBody > spectrumBB_
emission law
Definition: GyotoDynamicalDisk3D.h:61
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
double ** absorption_array_
Definition: GyotoDynamicalDisk3D.h:85
double tinit_
Time of the first FITS file.
Definition: GyotoDynamicalDisk3D.h:66
double const * getVelocity() const
Get Disk3D::velocity_.
char * dirname_
FITS files directory.
Definition: GyotoDynamicalDisk3D.h:65
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
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.
bool novel_
put to true if velocity of emitting particle is not provided
Definition: GyotoDynamicalDisk3D.h:70
double transmission(double nu_em, double dsem, state_t const &cph, double const co[8]) const
Interpolate transmission between grid dates.
double floortemperature_
if non-zero, emission and absorption are 0 for temperatures below this floor, emission=blackbody and ...
Definition: GyotoDynamicalDisk3D.h:71
double ** emission_array_
Definition: GyotoDynamicalDisk3D.h:78
void copyQuantities(int iq)
Set underlying Disk3D pointers to a specific date slice.
double dt_
Time increment between two FITS (assumed constant)
Definition: GyotoDynamicalDisk3D.h:67
int nb_times_
Number of times.
Definition: GyotoDynamicalDisk3D.h:68
bool temperature_
1 if temperature is given in fits data file, 0 if emission coef is directly given
Definition: GyotoDynamicalDisk3D.h:64
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
virtual double emission(double nu_em, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
Specific intensity Iν
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:135
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43