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>
38 
39 #ifdef GYOTO_USE_XERCES
40 #include <GyotoRegister.h>
41 #endif
42 
43 #include <string>
44 
52  public Gyoto::Astrobj::Star {
54 
55  // Data :
56  // -----
57  private:
59  double temperature_;
60  double timeRef_M_;
61  double timeSigma_M_;
63  double kappaIndex_;
64  SmartPointer<Spectrum::KappaDistributionSynchrotron> spectrumKappaSynch_; // kappa-distribution synchrotron spectrum
65 
66  // Constructors - Destructor
67  // -------------------------
68  public:
69  GYOTO_OBJECT; // This object has a (non-inherited) Property list
70 
77  Blob();
78 
79  Blob(const Blob& orig);
80  virtual Blob * clone() const ;
81 
82  virtual ~Blob() ;
83 
84  public:
85  virtual std::string className() const ;
86  virtual std::string className_l() const ;
87 
88  public:
89  double numberDensity() const;
90  double numberDensity(std::string const &unit) const;
91  void numberDensity(double ne);
92  void numberDensity(double dens, std::string const &unit);
93  double temperature() const;
94  void temperature(double tt);
95  double timeRef() const;
96  double timeRef(std::string const &unit) const;
97  void timeRef(double tt);
98  void timeRef(double tt, std::string const &unit);
99  double timeSigma() const;
100  double timeSigma(std::string const &unit) const;
101  void timeSigma(double tt);
102  void timeSigma(double tt, std::string const &unit);
103  void magnetizationParameter(double rr);
104  double magnetizationParameter() const;
105  double kappaIndex() const;
106  void kappaIndex(double);
107 
108  virtual void radiativeQ(double Inu[], double Taunu[],
109  double const nu_em[], size_t nbnu,
110  double dsem, state_t const &coord_ph,
111  double const coord_obj[8]=NULL) const ;
112 
113 };
114 
115 
116 #endif
Mass-less, spherical object following a timelike geodesic.
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
double magnetizationParameter_
magnetization parameter
Definition: GyotoBlob.h:62
Gyoto registers.
double temperature_
temperature of hotspot
Definition: GyotoBlob.h:59
double timeRef_M_
M-unit reference time for Gaussian hotspot evolution.
Definition: GyotoBlob.h:60
Base class for metric description.
virtual std::string className_l() const
"inflate_star"
virtual Blob * clone() const
Cloner.
double kappaIndex_
hotspot synchrotron kappa-distribution index
Definition: GyotoBlob.h:63
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
double timeSigma_M_
M-unit temporal sigma for Gaussian hotspot evolution.
Definition: GyotoBlob.h:61
virtual std::string className() const
"Blob"
Mass-less, spherical object following a timelike geodesic.
Definition: GyotoStar.h:93
Pointers performing reference counting.
Definition: GyotoProperty.h:45
Blob of plasma following a Star orbit, emitting synchrotron, with Gaussian time-evolving density and ...
Definition: GyotoBlob.h:51
double numberDensity_cgs_
cgs-unit number density of hotspot
Definition: GyotoBlob.h:58
Powerlaw synchrotron spectrum.
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