Gyoto
GyotoThickDisk.h
Go to the documentation of this file.
1 
13 /*
14  Copyright 2019 Frederic Vincent, Thibaut Paumard
15 
16  This file is part of Gyoto.
17 
18  Gyoto is free software: you can redistribute it and/or modify
19  it under the terms of the GNU General Public License as published by
20  the Free Software Foundation, either version 3 of the License, or
21  (at your option) any later version.
22 
23  Gyoto is distributed in the hope that it will be useful,
24  but WITHOUT ANY WARRANTY; without even the implied warranty of
25  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  GNU General Public License for more details.
27 
28  You should have received a copy of the GNU General Public License
29  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
30  */
31 
32 #ifndef __GyotoThickDisk_H_
33 #define __GyotoThickDisk_H_
34 
35 #include <iostream>
36 #include <fstream>
37 #include <iomanip>
38 
39 namespace Gyoto{
40  namespace Astrobj { class ThickDisk; }
41 }
42 
43 #include <GyotoStandardAstrobj.h>
46 
60 : public Astrobj::Standard,
61  public Hook::Listener
62 {
64  private:
65  SmartPointer<Spectrum::ThermalSynchrotron> spectrumThermalSynch_;
70  double beta_veloparam_;
74  double densitySlope_;
76  std::string magneticConfig_;
77 
78  // Constructors - Destructor
79  // -------------------------
80  public:
83 
85 
86  ThickDisk(const ThickDisk& ) ;
87  virtual ThickDisk* clone () const;
88 
89  virtual ~ThickDisk() ;
90 
91  // Accessors
92  // ---------
93  public:
94  void thickDiskInnerRadius(double hh);
95  double thickDiskInnerRadius() const;
96  void thickDiskZGaussianSigma(double sig);
97  double thickDiskZGaussianSigma() const;
98  void useSelfAbsorption(bool abs) ;
99  bool useSelfAbsorption() const;
100  void veloParam(std::vector<double> const &v);
101  std::vector<double> veloParam() const;
102  double numberDensityAtInnerRadius() const;
103  double numberDensityAtInnerRadius(std::string const &unit) const;
104  void numberDensityAtInnerRadius(double ne);
105  void numberDensityAtInnerRadius(double dens, std::string const &unit);
106  void temperatureAtInnerRadius(double tt);
107  double temperatureAtInnerRadius()const;
108  void temperatureSlope(double ss);
109  double temperatureSlope()const;
110  void densitySlope(double ss);
111  double densitySlope()const;
112  void magnetizationParameter(double rr);
113  double magnetizationParameter()const;
114  void magneticConfiguration(std::string config);
115  std::string magneticConfiguration() const;
116 
117  public:
118  using Generic::metric;
119  virtual void metric(SmartPointer<Metric::Generic>);
120 
121  virtual double operator()(double const coord[4]) ;
122 
123  virtual void radiativeQ(double Inu[], double Taunu[],
124  double const nu_em[], size_t nbnu,
125  double dsem, state_t const &coord_ph,
126  double const coord_obj[8]=NULL) const ;
127  virtual void getVelocity(double const pos[4], double vel[4]) ;
128 
129  virtual void radiativeQ(double *Inu, double *Qnu, double *Unu,
130  double *Vnu,
131  Eigen::Matrix4d *Onu,
132  double const *nuem , size_t nbnu,
133  double dsem,
134  state_t const &cph,
135  double const *co) const;
136 
137 };
138 
139 #endif
Powerlaw synchrotron spectrum.
#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
Astronomical objects defined bya a potential/distance.
Thermal synchrotron spectrum.
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
Astronomical objects defined bya a potential/distance.
Definition: GyotoStandardAstrobj.h:87
A thick accretion disk described by its inner radius and the fwhm of the Gaussian factor affecting th...
Definition: GyotoThickDisk.h:62
double temperatureAtInnerRadius_
electron temperature at inner radius (K)
Definition: GyotoThickDisk.h:72
std::string magneticConfig_
Specify the magnetic field configuration for polarisation.
Definition: GyotoThickDisk.h:76
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
double temperatureSlope_
electron temperature \propto r^{-temperatureSlope_}
Definition: GyotoThickDisk.h:73
double densitySlope_
electron density \propto r^{-densitySlope_}
Definition: GyotoThickDisk.h:74
double numberDensityAtInnerRadius_cgs_
electron nb density at inner radius (cgs)
Definition: GyotoThickDisk.h:71
bool use_selfabsorption_
True if selfabs is used in radiative transfer.
Definition: GyotoThickDisk.h:68
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
double beta_veloparam_
beta such that Omega = Omega_circ + (1-beta)*(Omega_rad - Omega_circ)
Definition: GyotoThickDisk.h:70
double thickDiskInnerRadius_
Inner disk radius in M units.
Definition: GyotoThickDisk.h:66
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
double magnetizationParameter_
Pmagn/(ne mp c2)
Definition: GyotoThickDisk.h:75
virtual ThickDisk * clone() const
Cloner.
double alpha_veloparam_
alpha such that u^r = u^r_circ + (1-alpha)*(u^r_rad - u^r_circ)
Definition: GyotoThickDisk.h:69
double thickDiskZGaussianSigma_
Stdev of the Gaussian modulating the density along z in units of cylindrical radius.
Definition: GyotoThickDisk.h:67
I might listen to a Teller.
Definition: GyotoHooks.h:64
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:135
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:44