GyotoBlob.h
Go to the documentation of this file.
/*
Copyright 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 __GyotoBlob_H_
#define __GyotoBlob_H_
namespace Gyoto{
namespace Astrobj { class Blob; }
}
#include <GyotoMetric.h>
#include <GyotoStar.h>
#include <GyotoKappaDistributionSynchrotronSpectrum.h>
#include <GyotoPowerLawSynchrotronSpectrum.h>
#include <GyotoThermalSynchrotronSpectrum.h>
#ifdef GYOTO_USE_XERCES
#include <GyotoRegister.h>
#endif
#include <string>
class Gyoto::Astrobj::Blob :
public Gyoto::Astrobj::Star {
friend class Gyoto::SmartPointer<Gyoto::Astrobj::Blob>;
// Data :
// -----
private:
double numberDensity_cgs_;
double temperature_;
double timeRef_M_;
double timeSigma_M_;
double magnetizationParameter_;
double kappaIndex_;
SmartPointer<Spectrum::KappaDistributionSynchrotron> spectrumKappaSynch_; // kappa-distribution synchrotron spectrum
SmartPointer<Spectrum::PowerLawSynchrotron> spectrumPLSynch_; // PL-distribution synchrotron spectrum
SmartPointer<Spectrum::ThermalSynchrotron> spectrumThermalSynch_; // Thermal distribution synchrotron spectrum
std::string magneticConfig_; // Magnetic field geometry (toroidal, vertical)
std::string electronDistrib_; // Electron distribution (thermal, kappa)
// Constructors - Destructor
// -------------------------
public:
GYOTO_OBJECT; // This object has a (non-inherited) Property list
Blob();
Blob(const Blob& orig);
virtual Blob * clone() const ;
virtual ~Blob() ;
public:
void electronDistribution(const std::string &kind);
std::string electronDistribution() const;
virtual std::string className() const ;
virtual std::string className_l() const ;
public:
double numberDensity() const;
double numberDensity(std::string const &unit) const;
void numberDensity(double ne);
void numberDensity(double dens, std::string const &unit);
double temperature() const;
void temperature(double tt);
double timeRef() const;
double timeRef(std::string const &unit) const;
void timeRef(double tt);
void timeRef(double tt, std::string const &unit);
double timeSigma() const;
double timeSigma(std::string const &unit) const;
void timeSigma(double tt);
void timeSigma(double tt, std::string const &unit);
void magnetizationParameter(double rr);
double magnetizationParameter() const;
double kappaIndex() const;
void kappaIndex(double);
void magneticConfiguration(std::string config);
std::string magneticConfiguration() const;
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 radiativeQ(double Inu[], double Qnu[], double Unu[],
double Vnu[], Eigen::Matrix4d Onu[],
double const nu_ems[], size_t nbnu, double dsem,
state_t const &coord_ph, double const coord_obj[8]) const;
};
#endif
GyotoKappaDistributionSynchrotronSpectrum.h
Powerlaw synchrotron spectrum.
GyotoMetric.h
Base class for metric description.
GYOTO_OBJECT
#define GYOTO_OBJECT
Declare class::properties and class::getProperties().
Definition GyotoObject.h:84
GyotoPowerLawSynchrotronSpectrum.h
Powerlaw synchrotron spectrum.
GyotoRegister.h
Gyoto registers.
GyotoStar.h
Mass-less, spherical object following a timelike geodesic.
GyotoThermalSynchrotronSpectrum.h
Thermal synchrotron spectrum.
Gyoto::Astrobj::Blob
Blob of plasma following a Star orbit, emitting synchrotron, with Gaussian time-evolving density and ...
Definition GyotoBlob.h:54
Gyoto::Astrobj::Blob::Blob
Blob()
Default constructor.
Gyoto::Astrobj::Blob::kappaIndex_
double kappaIndex_
hotspot synchrotron kappa-distribution index
Definition GyotoBlob.h:65
Gyoto::Astrobj::Blob::magnetizationParameter_
double magnetizationParameter_
magnetization parameter
Definition GyotoBlob.h:64
Gyoto::Astrobj::Blob::className
virtual std::string className() const
"Blob"
Gyoto::Astrobj::Blob::temperature_
double temperature_
temperature of hotspot
Definition GyotoBlob.h:61
Gyoto::Astrobj::Blob::timeRef_M_
double timeRef_M_
M-unit reference time for Gaussian hotspot evolution.
Definition GyotoBlob.h:62
Gyoto::Astrobj::Blob::numberDensity_cgs_
double numberDensity_cgs_
cgs-unit number density of hotspot
Definition GyotoBlob.h:60
Gyoto::Astrobj::Blob::clone
virtual Blob * clone() const
Cloner.
Gyoto::Astrobj::Blob::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::Blob::timeSigma_M_
double timeSigma_M_
M-unit temporal sigma for Gaussian hotspot evolution.
Definition GyotoBlob.h:63
Gyoto::Astrobj::Blob::className_l
virtual std::string className_l() const
"inflate_star"
Gyoto::Astrobj::Star
Mass-less, spherical object following a timelike geodesic.
Definition GyotoStar.h:96
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