31 #ifndef __GyotoPolishDoughnut_H_
32 #define __GyotoPolishDoughnut_H_
35 namespace Astrobj {
class PolishDoughnut; }
36 class FactoryMessenger;
103 void operator=(const PolishDoughnut&) ;
108 double
getL0() const;
139 virtual void
setMetric(Gyoto::SmartPointer<Gyoto::Metric::Generic>);
147 int
Impact(Photon *ph, size_t index,
148 Astrobj::Properties *data);
156 int
Impact_(Photon *ph, size_t index,
157 Astrobj::Properties *data);
159 virtual double operator()(double const coord[4]) ;
164 #ifdef GYOTO_USE_XERCES
165 virtual void
fillElement(FactoryMessenger *fmp) const ;
176 virtual void
tell(Gyoto::Hook::Teller * msg);
177 virtual void
getVelocity(double const pos[4], double vel[4]) ;
190 size_t* chaninds, size_t nbnu,
191 double dsem, double *cph, double *co) const;
193 virtual double
emission(double nu_em, double dsem, double coord_ph[8],
194 double coord_obj[8]) const;
195 virtual void
emission(double Inu[], double nu_em[], size_t nbnu,
196 double dsem, double coord_ph[8],
197 double coord_obj[8]=NULL) const ;
200 double numax, double T_electron,
201 double n_e, double n_j,
202 double amplification,
204 int comptonorder) const;
207 double numax, double nu_0,
209 double amplification,
211 double alpha1, double alpha2,
212 double alpha3, double preff,
213 int comptonorder) const;
215 double
transmission(double nuem, double dsem, double coord_ph[8]) const ;
216 double
BBapprox(double nuem, double Te) const;
217 static double
funcxM(double alpha1, double alpha2, double alpha3, double xM);
222 double
potential(double r, double theta) const;
274 static double bessi0(
double xx);
275 static double bessi1(
double xx);
276 static double bessk0(
double xx);
277 static double bessk1(
double xx);
278 static double bessk(
int nn,
double xx);
int use_specific_impact_
Use PolishDoughnut::Impact_() or Standard::Impact()
Definition: GyotoPolishDoughnut.h:84
double getWcentre() const
Get PolishDoughnut::W_centre_.
double l0_
Angular momentum. Tied to PolishDoughnut::lambda_.
Definition: GyotoPolishDoughnut.h:73
void useSpecificImpact(int yes=1)
Set PolishDoughnut::use_specific_impact_.
virtual Gyoto::SmartPointer< Gyoto::Metric::Generic > getMetric() const
Get the Metric Generic::gg_.
virtual double operator()(double const coord[4])
Function defining the object interior.
A toroïdal accretion structure.
Definition: GyotoPolishDoughnut.h:55
double getLambda() const
Get PolishDoughnut::lambda_.
static double funcxM(double alpha1, double alpha2, double alpha3, double xM)
Mahadevan 96 fit function.
double DeltaWm1_
1./(W_centre_ - W_surface_);
Definition: GyotoPolishDoughnut.h:79
double potential(double r, double theta) const
Potential defining shape, used by operator()()
double getTemperatureRatio() const
Get PolishDoughnut::temperature_ratio_.
static double bessi1(double xx)
Modified Bessel function I1
virtual double integrateEmission(double nu1, double nu2, double dsem, double c_ph[8], double c_obj[8]=NULL) const
∫ν1ν2 Iν dν (or jν)
friend std::ostream & operator<<(std::ostream &, const PolishDoughnut &)
Display.
Tellers tell Listeners when they mutate.
Classes with an operator() method.
double central_density_
Central density in kg/L (same as g cm^-3)
Definition: GyotoPolishDoughnut.h:81
void setLambda(double lambda)
Set PolishDoughnut::lambda_.
double lambda_
Adimentionned angular momentum.
Definition: GyotoPolishDoughnut.h:74
double aa_
Metric spin.
Definition: GyotoPolishDoughnut.h:238
int Impact(Photon *ph, size_t index, Astrobj::Properties *data)
Call either PolishDoughnut::Impact() or Standard::Impact()
#define size_t
If not defined in <sys/types.h>.
Definition: GyotoConfig.h:293
virtual double operator()(double) const
The actual function.
virtual void fillElement(FactoryMessenger *fmp) const
Fill XML section.
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
virtual void setMetric(Gyoto::SmartPointer< Gyoto::Metric::Generic >)
Set the Metric Generic::gg_.
double emissionBrems(double nu_em, double nu_crit, double numax, double T_electron, double n_e, double n_j, double amplification, double Cbrems, int comptonorder) const
Bremsstrahlung proxy for emission()
Astronomical objects defined bya a potential/distance.
virtual void integrateEmission(double *I, double *boundaries, size_t *chaninds, size_t nbnu, double dsem, double *cph, double *co) const
∫ν1ν2 Iν dν (or jν)
A functor like double (func) (double) const.
Definition: GyotoFunctors.h:56
double aa2_
aa_2
Definition: GyotoPolishDoughnut.h:86
double getCentralDensity() const
Get PolishDoughnut::central_density_.
virtual void tell(Gyoto::Hook::Teller *msg)
Update PolishDoughnut::aa_.
double beta_
Pmagn/Pgas
Definition: GyotoPolishDoughnut.h:83
virtual double emission(double nu_em, double dsem, double coord_ph[8], double coord_obj[8]) const
Specific intensity Iν
size_t spectral_oversampling_
Oversampling used in integrateEmission()
Definition: GyotoPolishDoughnut.h:87
double aa_
PolishDoughnut::gg_ spin, cached when setting PolishDoughnut::lambda_.
Definition: GyotoPolishDoughnut.h:85
void setTemperatureRatio(double temp)
Set PolishDoughnut::temperature_ratio_.
static double bessk0(double xx)
Modified Bessel function K0
double getBeta() const
Get PolishDoughnut::beta_.
SmartPointer< Gyoto::Metric::KerrBL > gg_
KerrBL metric.
Definition: GyotoPolishDoughnut.h:72
size_t getSpectralOversampling() const
Get PolishDoughnut::spectral_oversampling_.
double transmission(double nuem, double dsem, double coord_ph[8]) const
Transmission: exp( αν * dsem )
double emissionSynch(double nu_em, double nu_crit, double numax, double nu_0, double T_electron, double amplification, double Csynch, double alpha1, double alpha2, double alpha3, double preff, int comptonorder) const
Synchrotron proxy for emission()
intersection_t intersection
double intersection(double) Functor
Definition: GyotoPolishDoughnut.h:271
double W_centre_
Potential central value. Tied to PolishDoughnut::lambda_.
Definition: GyotoPolishDoughnut.h:76
virtual PolishDoughnut * clone() const
Cloner.
double centraltemp_over_virial_
Tcenter/Tvirial
Definition: GyotoPolishDoughnut.h:82
double getCentralTempOverVirial() const
Get PolishDoughnut::centraltemp_over_virial_.
int Impact_(Photon *ph, size_t index, Astrobj::Properties *data)
A specific implementation of Generic::Impact()
double r_cusp_
Cusp radius in geometrical units. Tied to PolishDoughnut::lambda_.
Definition: GyotoPolishDoughnut.h:77
double const * par
Parameter array.
Definition: GyotoPolishDoughnut.h:268
double W_surface_
Potential surface value. Tied to PolishDoughnut::lambda_.
Definition: GyotoPolishDoughnut.h:75
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:51
I might listen to a Teller.
Definition: GyotoHooks.h:64
double getL0() const
Get PolishDoughnut::l0_.
double aa2_
aa_2
Definition: GyotoPolishDoughnut.h:239
void setSpectralOversampling(size_t)
Set PolishDoughnut::spectral_oversampling_.
double temperature_ratio_
Central ion/electron temperature ratio.
Definition: GyotoPolishDoughnut.h:80
void setCentralTempOverVirial(double val)
Set PolishDoughnut::centraltemp_over_virial_.
void setCentralDensity(double density)
Set PolishDoughnut::central_density_.
Astronomical objects defined bya a potential/distance.
Definition: GyotoStandardAstrobj.h:84
static double bessk(int nn, double xx)
Modified Bessel function.
double transcendental(double) Functor class
Definition: GyotoPolishDoughnut.h:253
static double bessk1(double xx)
Modified Bessel function K1
double getWsurface() const
Get PolishDoughnut::W_surface_.
double intersection(double) Functor class
Definition: GyotoPolishDoughnut.h:236
static double bessi0(double xx)
Modified Bessel function I0
double r_centre_
Central radius in geometrical units. Tied to PolishDoughnut::lambda_.
Definition: GyotoPolishDoughnut.h:78
double getRcusp() const
Get PolishDoughnut::r_cusp_.
void setBeta(double beta)
Set PolishDoughnut::beta_.
virtual int setParameter(std::string name, std::string content, std::string unit)
Set parameter by name.
double BBapprox(double nuem, double Te) const
Approximated Black-Body function.
double l0_
Torus angular momentum.
Definition: GyotoPolishDoughnut.h:240
double getRcentre() const
Get PolishDoughnut::r_centre_.