Gyoto
GyotoThermalSynchrotronSpectrum.h
Go to the documentation of this file.
1 
7 /*
8  Copyright 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 __GyotoThermalSynchrotronSpectrum_H_
27 #define __GyotoThermalSynchrotronSpectrum_H_
28 #include "GyotoSpectrum.h"
29 #include <GyotoBlackBodySpectrum.h>
30 
31 namespace Gyoto {
32  namespace Spectrum {
33  class ThermalSynchrotron;
34  }
35 }
36 
51  protected:
52  SmartPointer<Spectrum::BlackBody> spectrumBB_;
53  double T_;
55  double angle_B_pem_;
56  double cyclotron_freq_;
58  double bessel_K2_;
59 
60  public:
62 
64  ThermalSynchrotron(const ThermalSynchrotron &);
65  virtual ThermalSynchrotron * clone() const;
66 
67  using Gyoto::Spectrum::Generic::operator();
74  virtual double operator()(double nu) const;
83 #ifndef GYOTO_SWIGIMPORTED
84  virtual double operator()(double nu,double ,double ds) const;
85 #endif
86  // NB: the second argument, opacity in the Spectrum API
87  // is useless here
88 
89  double temperature() const;
90  void temperature(double tt);
91  double numberdensityCGS() const;
92  void numberdensityCGS(double rho);
93  double angle_B_pem() const;
94  void angle_B_pem(double rho);
95  double cyclotron_freq() const;
96  void cyclotron_freq(double rho);
97  bool angle_averaged() const;
98  void angle_averaged(bool ang);
99  double besselK2() const;
100  void besselK2(double bessel);
101 
108  double jnuCGS(double nu) const;
115  double jQnuCGS(double nu) const;
122  double jUnuCGS(double nu) const;
129  double jVnuCGS(double nu) const;
130 
136  double alphanuCGS(double nu) const;
142  double alphaQnuCGS(double nu) const;
148  double alphaUnuCGS(double nu) const;
154  double alphaVnuCGS(double nu) const;
155 
161  double rQnuCGS(double nu) const;
167  double rUnuCGS(double nu) const;
173  double rVnuCGS(double nu) const;
174 
175 
180  void radiativeQ(double jnu[], // output
181  double anu[], // output
182  double const nu_ems[],
183  size_t nbnu
184  ) ;
189  void radiativeQ(double jInu[], double jQnu[], double jUnu[], double jVnu[],
190  double aInu[], double aQnu[], double aUnu[], double aVnu[],
191  double rQnu[], double rUnu[], double rVnu[],
192  double const nu_ems[],
193  size_t nbnu );
194 
195 };
196 
197 #endif
I_nu(nu, T) = cst_*2*h*nu^3/c^2/(exp(h*nu/k*T)-1.);.
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
Spectrum of a simple object (e.g. Star)
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:135
Spectrum emitted by an Astrobj.
Definition: GyotoSpectrum.h:137
Thermal synchrotron spectrum.
Definition: GyotoThermalSynchrotronSpectrum.h:49
double alphaUnuCGS(double nu) const
double rVnuCGS(double nu) const
void radiativeQ(double jnu[], double anu[], double const nu_ems[], size_t nbnu)
double alphaVnuCGS(double nu) const
double angle_B_pem_
Angle between Bfield and emission direction (rad)
Definition: GyotoThermalSynchrotronSpectrum.h:55
double bessel_K2_
Bessel K2 function.
Definition: GyotoThermalSynchrotronSpectrum.h:58
double rQnuCGS(double nu) const
double jUnuCGS(double nu) const
SmartPointer< Spectrum::BlackBody > spectrumBB_
blackbody emission
Definition: GyotoThermalSynchrotronSpectrum.h:52
double cyclotron_freq_
Cyclotron frequency (e*B / 2*pi*me*c)
Definition: GyotoThermalSynchrotronSpectrum.h:56
double alphanuCGS(double nu) const
double jQnuCGS(double nu) const
double jVnuCGS(double nu) const
double numberdensityCGS_
Number density in CGS UNITS (careful)
Definition: GyotoThermalSynchrotronSpectrum.h:54
double jnuCGS(double nu) const
double rUnuCGS(double nu) const
double T_
Temperature.
Definition: GyotoThermalSynchrotronSpectrum.h:53
virtual ThermalSynchrotron * clone() const
Cloner.
double alphaQnuCGS(double nu) const
bool angle_averaged_
Boolean for angle averaging.
Definition: GyotoThermalSynchrotronSpectrum.h:57
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:44