GyotoJet.h
Go to the documentation of this file.
/*
Copyright 2017-2019 Frederic Vincent, Thibaut Paumard
This file is part of Gyoto.
Gyoto is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gyoto is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GyotoJet_H_
#define __GyotoJet_H_
#include <iostream>
#include <fstream>
#include <iomanip>
namespace Gyoto{
namespace Astrobj { class Jet; }
}
#include <GyotoStandardAstrobj.h>
#include <GyotoKappaDistributionSynchrotronSpectrum.h>
#include <GyotoThermalSynchrotronSpectrum.h>
class Gyoto::Astrobj::Jet
: public Astrobj::Standard,
public Hook::Listener
{
friend class Gyoto::SmartPointer<Gyoto::Astrobj::Jet>;
private:
SmartPointer<Spectrum::KappaDistributionSynchrotron> spectrumKappaSynch_;
SmartPointer<Spectrum::ThermalSynchrotron> spectrumThermalSynch_;
double jetOuterOpeningAngle_;
double jetInnerOpeningAngle_;
double jetBaseHeight_;
double gammaJet_;
double jetVphiOverVr_;
double baseNumberDensity_cgs_;
double baseTemperature_;
double temperatureSlope_;
double magnetizationParameter_;
// Constructors - Destructor
// -------------------------
public:
GYOTO_OBJECT;
GYOTO_OBJECT_THREAD_SAFETY;
Jet();
Jet(const Jet& ) ;
virtual Jet* clone () const;
virtual ~Jet() ;
// Accessors
// ---------
public:
void jetOuterOpeningAngle(double ang);
double jetOuterOpeningAngle() const;
void jetInnerOpeningAngle(double ang);
double jetInnerOpeningAngle() const;
void jetBaseHeight(double hh);
double jetBaseHeight() const;
void gammaJet(double gam);
double gammaJet() const;
void jetVphiOverVr(double alpha);
double jetVphiOverVr() const;
double baseNumberDensity() const;
double baseNumberDensity(std::string const &unit) const;
void baseNumberDensity(double ne);
void baseNumberDensity(double dens, std::string const &unit);
void baseTemperature(double tt);
double baseTemperature()const;
void temperatureSlope(double ss);
double temperatureSlope()const;
void magnetizationParameter(double rr);
double magnetizationParameter()const;
void kappaIndex(double index);
double kappaIndex()const;
public:
using Generic::metric;
virtual void metric(SmartPointer<Metric::Generic>);
virtual double operator()(double const coord[4]) ;
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 ;
virtual void getVelocity(double const pos[4], double vel[4]) ;
};
#endif
GyotoKappaDistributionSynchrotronSpectrum.h
Powerlaw synchrotron spectrum.
GYOTO_OBJECT
#define GYOTO_OBJECT
Declare class::properties and class::getProperties().
Definition GyotoObject.h:84
GyotoStandardAstrobj.h
Astronomical objects defined bya a potential/distance.
GyotoThermalSynchrotronSpectrum.h
Thermal synchrotron spectrum.
Gyoto::Astrobj::Generic::metric
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
Gyoto::Astrobj::Jet
Simple jet model with thermal or kappa-distribution synchrotron emission from Pandya et al....
Definition GyotoJet.h:90
Gyoto::Astrobj::Jet::baseTemperature_
double baseTemperature_
electron temperature at jet base (K)
Definition GyotoJet.h:101
Gyoto::Astrobj::Jet::radiativeQ
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
Gyoto::Astrobj::Jet::metric
virtual void metric(SmartPointer< Metric::Generic >)
Set the Metric gg_.
Gyoto::Astrobj::Jet::gammaJet_
double gammaJet_
Constant Lorentz factor in jet.
Definition GyotoJet.h:98
Gyoto::Astrobj::Jet::getVelocity
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
Gyoto::Astrobj::Jet::jetInnerOpeningAngle_
double jetInnerOpeningAngle_
Jet inner opening angle (rad).
Definition GyotoJet.h:96
Gyoto::Astrobj::Jet::jetVphiOverVr_
double jetVphiOverVr_
this is (r*Vphi/Vr) where V is the jet velocity measured by the ZAMO
Definition GyotoJet.h:99
Gyoto::Astrobj::Jet::temperatureSlope_
double temperatureSlope_
electron temperature \propto z^temperatureSlope_
Definition GyotoJet.h:102
Gyoto::Astrobj::Jet::clone
virtual Jet * clone() const
Cloner.
Gyoto::Astrobj::Jet::Jet
Jet()
Standard constructor.
Gyoto::Astrobj::Jet::jetBaseHeight_
double jetBaseHeight_
Height of the base of the jet (z value, M units).
Definition GyotoJet.h:97
Gyoto::Astrobj::Jet::jetOuterOpeningAngle_
double jetOuterOpeningAngle_
Jet outer opening angle (rad).
Definition GyotoJet.h:95
Gyoto::Astrobj::Jet::magnetizationParameter_
double magnetizationParameter_
Pmagn/(ne mp c2).
Definition GyotoJet.h:103
Gyoto::Astrobj::Jet::baseNumberDensity_cgs_
double baseNumberDensity_cgs_
electron nb density at jet base (cgs)
Definition GyotoJet.h:100
Gyoto::Astrobj::Standard
Astronomical objects defined bya a potential/distance.
Definition GyotoStandardAstrobj.h:87
Gyoto::Hook::Listener
I might listen to a Teller.
Definition GyotoHooks.h:64
Gyoto::SmartPointer
Pointers performing reference counting.
Definition GyotoSmartPointer.h:135
Gyoto::Astrobj
Access to astronomical objects.
Definition GyotoAstrobj.h:49
Gyoto
Namespace for the Gyoto library.
Definition GyotoAstrobj.h:44