Gyoto
GyotoEquatorialHotSpot.h
Go to the documentation of this file.
1 
7 /*
8  Copyright 2013, 2018 Frederic Vincent & Thibaut Paumard
9 
10  This file is part of Gyoto.
11 
12  Gyoto is free software: you can redistribute it and/or modify
13  it under the terms of the GNU General Public License as published by
14  the Free Software Foundation, either version 3 of the License, or
15  (at your option) any later version.
16 
17  Gyoto is distributed in the hope that it will be useful,
18  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  GNU General Public License for more details.
21 
22  You should have received a copy of the GNU General Public License
23  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
24  */
25 
26 #ifndef __GyotoEquatorialHotSpot_h
27 #define __GyotoEquatorialHotSpot_h
28 
29 #include <GyotoAstrobj.h>
30 #include <GyotoThinDisk.h>
31 #include <GyotoWorldline.h>
33 #include <string>
34 
35 
36 namespace Gyoto {
37  namespace Astrobj {
38  class EquatorialHotSpot;
39  };
40 };
41 
44  public Gyoto::Worldline {
46 
47  private:
48  double sizespot_;
49  enum beaming_t {IsotropicBeaming=0, NormalBeaming=1,
50  RadialBeaming=2, IsotropicConstant=3};
51  beaming_t beaming_;
52  double beamangle_;
53  SmartPointer<Spectrum::ThermalSynchrotron> spectrumThermalSynch_; // Thermal distribution synchrotron spectrum
54 
55  public:
57  GYOTO_WORLDLINE;
62  virtual ~EquatorialHotSpot();
63  virtual EquatorialHotSpot * clone() const ;
64 
65  // Accessors for the Property list
66  void spotRadSize(double t);
67  double spotRadSize() const;
68 
69  void beaming(std::string const &b);
70  std::string beaming() const;
71 
72  void beamAngle(double t);
73  double beamAngle() const;
74 
75  //
76 
77  double getMass() const;
78  using Generic::metric;
80  void setInitialCondition(double coord[8]);
81 
82  void getVelocity(double const pos[4], double vel[4]);
83 
84  double emission(double nu_em, double dsem,
85  state_t const &,
86  double const coord_obj[8]) const;
87 
88  void radiativeQ(double *Inu, double *Qnu, double *Unu,
89  double *Vnu,
90  Eigen::Matrix4d *Onu,
91  double const *nuem , size_t nbnu,
92  double dsem,
93  state_t const &cph,
94  double const *co) const;
95 
96  void radiativeQ(double Inu[], // output
97  double Taunu[], // output
98  double const nu_ems[], size_t nbnu, // input
99  double dsem,
100  state_t const &coord_ph,
101  double const coord_obj[8]) const;
102 
103  // needed for legacy XML files
104  virtual int setParameter(std::string name,
105  std::string content,
106  std::string unit);
107 #ifdef GYOTO_USE_XERCES
108  // needed for wait_pos_
109  void setParameters(FactoryMessenger* fmp);
110  virtual void fillProperty(Gyoto::FactoryMessenger *fmp, Property const &p) const ;
111 #endif
112 
113 #endif
114 };
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
void setParameters(FactoryMessenger *fmp)
Main loop in Subcontractor_t function.
double deltaMax() const
Get delta_max_.
virtual double deltaMax(double coord[8])
Get max step constraint for adaptive integration.
Timelike or null geodesics.
Definition: GyotoWorldline.h:254
Astronomical objects (light emitters)
Thermal synchrotron spectrum.
void radiativeQ(double *Inu, double *Qnu, double *Unu, double *Vnu, Eigen::Matrix4d *Onu, double const *nuem, size_t nbnu, double dsem, state_t const &cph, double const *co) const
Compute the increment of Stokes parameters and transmission matrix. Polarised version of RadiaveQ...
Factory / SmartPointee::Subcontractor_t interface.
Definition: GyotoFactoryMessenger.h:92
virtual int setParameter(std::string name, std::string content, std::string unit)
Set parameter by name.
Timelike or null geodesics.
void getVelocity(double const pos[4], double vel[4])
Get fluid 4-velocity at point.
Property that can be set and got using standard methods.
Definition: GyotoProperty.h:607
Geometrically thin disks and rings.
Definition: GyotoThinDisk.h:68
Geometrically thin disks and rings.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:46
double emission(double nu_em, double dsem, state_t const &, double const coord_obj[8]) const
Specific intensity Iν
Definition: GyotoEquatorialHotSpot.h:42
Pointers performing reference counting.
Definition: GyotoProperty.h:45
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
virtual EquatorialHotSpot * clone() const
Cloner.
SmartPointer< Metric::Generic > metric() const
Get metric.
virtual void fillProperty(Gyoto::FactoryMessenger *fmp, Property const &p) const
Output a single Property to XML.
double getMass() const
Get mass of particule.