Gyoto
GyotoBlob.h
Go to the documentation of this file.
1 
8 /*
9  Copyright 2019 Frederic Vincent, Thibaut Paumard
10 
11  This file is part of Gyoto.
12 
13  Gyoto is free software: you can redistribute it and/or modify
14  it under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  Gyoto is distributed in the hope that it will be useful,
19  but WITHOUT ANY WARRANTY; without even the implied warranty of
20  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  GNU General Public License for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
25  */
26 
27 
28 #ifndef __GyotoBlob_H_
29 #define __GyotoBlob_H_
30 
31 namespace Gyoto{
32  namespace Astrobj { class Blob; }
33 }
34 
35 #include <GyotoMetric.h>
36 #include <GyotoStar.h>
40 
41 #ifdef GYOTO_USE_XERCES
42 #include <GyotoRegister.h>
43 #endif
44 
45 #include <string>
46 
54  public Gyoto::Astrobj::Star {
56 
57  // Data :
58  // -----
59  private:
61  double temperature_;
62  double timeRef_M_;
63  double timeSigma_M_;
65  double kappaIndex_;
66  SmartPointer<Spectrum::KappaDistributionSynchrotron> spectrumKappaSynch_; // kappa-distribution synchrotron spectrum
67  SmartPointer<Spectrum::PowerLawSynchrotron> spectrumPLSynch_; // PL-distribution synchrotron spectrum
68  SmartPointer<Spectrum::ThermalSynchrotron> spectrumThermalSynch_; // Thermal distribution synchrotron spectrum
69  std::string magneticConfig_; // Magnetic field geometry (toroidal, vertical)
70  std::string electronDistrib_; // Electron distribution (thermal, kappa)
71 
72  // Constructors - Destructor
73  // -------------------------
74  public:
75  GYOTO_OBJECT; // This object has a (non-inherited) Property list
76 
83  Blob();
84 
85  Blob(const Blob& orig);
86  virtual Blob * clone() const ;
87 
88  virtual ~Blob() ;
89 
90  public:
91  void electronDistribution(const std::string &kind);
92  std::string electronDistribution() const;
93 
94  virtual std::string className() const ;
95  virtual std::string className_l() const ;
96 
97  public:
98  double numberDensity() const;
99  double numberDensity(std::string const &unit) const;
100  void numberDensity(double ne);
101  void numberDensity(double dens, std::string const &unit);
102  double temperature() const;
103  void temperature(double tt);
104  double timeRef() const;
105  double timeRef(std::string const &unit) const;
106  void timeRef(double tt);
107  void timeRef(double tt, std::string const &unit);
108  double timeSigma() const;
109  double timeSigma(std::string const &unit) const;
110  void timeSigma(double tt);
111  void timeSigma(double tt, std::string const &unit);
112  void magnetizationParameter(double rr);
113  double magnetizationParameter() const;
114  double kappaIndex() const;
115  void kappaIndex(double);
116  void magneticConfiguration(std::string config);
117  std::string magneticConfiguration() const;
118 
119  virtual void radiativeQ(double Inu[], double Taunu[],
120  double const nu_em[], size_t nbnu,
121  double dsem, state_t const &coord_ph,
122  double const coord_obj[8]=NULL) const ;
123 
124  virtual void radiativeQ(double Inu[], double Qnu[], double Unu[],
125  double Vnu[], Eigen::Matrix4d Onu[],
126  double const nu_ems[], size_t nbnu, double dsem,
127  state_t const &coord_ph, double const coord_obj[8]) const;
128 
129 };
130 
131 
132 #endif
Powerlaw synchrotron spectrum.
Base class for metric description.
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
Powerlaw synchrotron spectrum.
Gyoto registers.
Mass-less, spherical object following a timelike geodesic.
Thermal synchrotron spectrum.
Blob of plasma following a Star orbit, emitting synchrotron, with Gaussian time-evolving density and ...
Definition: GyotoBlob.h:54
double kappaIndex_
hotspot synchrotron kappa-distribution index
Definition: GyotoBlob.h:65
double magnetizationParameter_
magnetization parameter
Definition: GyotoBlob.h:64
virtual std::string className() const
"Blob"
double temperature_
temperature of hotspot
Definition: GyotoBlob.h:61
double timeRef_M_
M-unit reference time for Gaussian hotspot evolution.
Definition: GyotoBlob.h:62
double numberDensity_cgs_
cgs-unit number density of hotspot
Definition: GyotoBlob.h:60
virtual Blob * clone() const
Cloner.
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 timeSigma_M_
M-unit temporal sigma for Gaussian hotspot evolution.
Definition: GyotoBlob.h:63
virtual std::string className_l() const
"inflate_star"
Mass-less, spherical object following a timelike geodesic.
Definition: GyotoStar.h:96
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:135
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:44