Gyoto
GyotoJet.h
Go to the documentation of this file.
1 
30 /*
31  Copyright 2017-2024 Frederic Vincent, Thibaut Paumard, Paloma Thévenet
32 
33  This file is part of Gyoto.
34 
35  Gyoto is free software: you can redistribute it and/or modify
36  it under the terms of the GNU General Public License as published by
37  the Free Software Foundation, either version 3 of the License, or
38  (at your option) any later version.
39 
40  Gyoto is distributed in the hope that it will be useful,
41  but WITHOUT ANY WARRANTY; without even the implied warranty of
42  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
43  GNU General Public License for more details.
44 
45  You should have received a copy of the GNU General Public License
46  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
47  */
48 
49 #ifndef __GyotoJet_H_
50 #define __GyotoJet_H_
51 
52 #include <iostream>
53 #include <fstream>
54 #include <iomanip>
55 
56 namespace Gyoto{
57  namespace Astrobj { class Jet; }
58 }
59 
60 #include <GyotoStandardAstrobj.h>
63 
91 : public Astrobj::Standard,
92  public Hook::Listener
93 {
94  friend class Gyoto::SmartPointer<Gyoto::Astrobj::Jet>;
95  private:
96  SmartPointer<Spectrum::KappaDistributionSynchrotron> spectrumKappaSynch_;
97  SmartPointer<Spectrum::ThermalSynchrotron> spectrumThermalSynch_;
98 
99  bool parabolic_;
100 
101  bool outflowing_;
102 
105 
108 
109  double jetVphiOverVr_;
110 
113  double gammaJet_;
118 
119  double alpha_;
120 
121  // Constructors - Destructor
122  // -------------------------
123  public:
124  GYOTO_OBJECT;
126 
127  Jet();
128 
129  Jet(const Jet& ) ;
130  virtual Jet* clone () const;
131 
132  virtual ~Jet() ;
133 
134  // Accessors
135  // ---------
136  public:
137  void parabolic(bool parabol);
138  bool parabolic() const ;
139 
140  void outflowing(bool out);
141  bool outflowing() const ;
142 
143  void jetShapeInnerParabolaParam(double param);
144  double jetShapeInnerParabolaParam() const;
145  void jetShapeOuterParabolaParam(double param);
146  double jetShapeOuterParabolaParam() const;
147 
148  void jetOuterOpeningAngle(double ang);
149  double jetOuterOpeningAngle() const;
150  void jetInnerOpeningAngle(double ang);
151  double jetInnerOpeningAngle() const;
152 
153  void jetStagnationRadius(double param);
154  double jetStagnationRadius() const;
155  void jetVphiOverVr(double alpha);
156  double jetVphiOverVr()const;
157  void jetInnerRadius(double hh);
158  double jetInnerRadius() const;
159  void gammaJet(double gam);
160  double gammaJet() const;
161  double baseNumberDensity() const;
162  double baseNumberDensity(std::string const &unit) const;
163  void baseNumberDensity(double ne);
164  void baseNumberDensity(double dens, std::string const &unit);
165  void baseTemperature(double tt);
166  double baseTemperature()const;
167  void temperatureSlope(double ss);
168  double temperatureSlope()const;
169  void magnetizationParameter(double rr);
170  double magnetizationParameter()const;
171  void kappaIndex(double index);
172  double kappaIndex()const;
173  void alpha(double alpha);
174  double alpha()const;
175 
176  public:
177  using Generic::metric;
178  virtual void metric(SmartPointer<Metric::Generic>);
179 
180  virtual double operator()(double const coord[4]) ;
181 
182  virtual void radiativeQ(double Inu[], double Taunu[],
183  double const nu_em[], size_t nbnu,
184  double dsem, state_t const &coord_ph,
185  double const coord_obj[8]=NULL) const ;
186  virtual void getVelocity(double const pos[4], double vel[4]) ;
187 
188  virtual void radiativeQ(double Inu[], double Qnu[], double Unu[],
189  double Vnu[], Eigen::Matrix4d Onu[],
190  double const nu_ems[], size_t nbnu, double dsem,
191  state_t const &coord_ph, double const coord_obj[8]) const;
192 
193 };
194 
195 #endif
Simple jet model with thermal or kappa-distribution synchrotron emission from Pandya et al...
Definition: GyotoJet.h:90
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
double magnetizationParameter_
Pmagn/(ne mp c2)
Definition: GyotoJet.h:117
double jetOuterOpeningAngle_
Jet outer opening angle (rad); used when parabolic_=False.
Definition: GyotoJet.h:106
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 alpha_
parameter that define the fraction of the &#39;toroidal&#39; configuration compared to the &#39;parabolic&#39; one fo...
Definition: GyotoJet.h:119
Thermal synchrotron spectrum.
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition: GyotoObject.h:99
double jetShapeOuterParabolaParam_
The jet shape outer boundary follows z = jetShapeOuterParabolaParam_ * rcyl^2, where rcyl is the cyli...
Definition: GyotoJet.h:104
double baseNumberDensity_cgs_
electron nb density at jet base (cgs)
Definition: GyotoJet.h:114
Astronomical objects defined bya a potential/distance.
virtual Jet * clone() const
Cloner.
double jetInnerRadius_
Jet inner radius, or "base of the jet", used for scaling the thermo quantities.
Definition: GyotoJet.h:112
double jetStagnationRadius_
Jet outflowing above, inflowing below.
Definition: GyotoJet.h:111
double jetVphiOverVr_
ratio V^(phi)/V^(r) in orthonormal basis where V is ZAMO-measured jet velocity
Definition: GyotoJet.h:109
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:46
Pointers performing reference counting.
Definition: GyotoProperty.h:45
I might listen to a Teller.
Definition: GyotoHooks.h:64
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
double gammaJet_
Constant Lorentz factor in jet (same def for parabolic and conical jet)
Definition: GyotoJet.h:113
bool parabolic_
True when the jet sheath has a parabolic shape; if false the shape will be conical (following Vincent...
Definition: GyotoJet.h:99
Astronomical objects defined bya a potential/distance.
Definition: GyotoStandardAstrobj.h:84
Powerlaw synchrotron spectrum.
bool outflowing_
True when the jet is outflowing. Else, inflowing.
Definition: GyotoJet.h:101
double baseTemperature_
electron temperature at jet base (K)
Definition: GyotoJet.h:115
double jetShapeInnerParabolaParam_
The jet shape inner boundary follows z = jetShapeInnerParabolaParam_ * rcyl^2, where rcyl is the cyli...
Definition: GyotoJet.h:103
double jetInnerOpeningAngle_
Jet inner opening angle (rad); used when parabolic_=False.
Definition: GyotoJet.h:107
double temperatureSlope_
electron temperature z^temperatureSlope_
Definition: GyotoJet.h:116