GyotoOscilTorus.h
Go to the documentation of this file.
/*
* Copyright (c) 2013, 2018 Frederic Vincent & Thibaut Paumard
*
*
*/
#ifndef __OscilTorus_h
#define __OscilTorus_h
#include <GyotoAstrobj.h>
#include <GyotoStandardAstrobj.h>
#include <GyotoKerrBL.h>
namespace Gyoto {
namespace Astrobj {
class OscilTorus;
};
class FactoryMessenger;
namespace Spectrum {
class Generic;
}
};
class Gyoto::Astrobj::OscilTorus
: public Gyoto::Astrobj::Standard,
public Hook::Listener {
friend class Gyoto::SmartPointer<Gyoto::Astrobj::OscilTorus>;
private:
// Members corresponding to properties:
double c_;
unsigned long mode_;
double polycst_;
double polyindex_;
double central_density_;
enum perturb_t {Radial=1, Vertical=2, X=3, Plus=4, Breathing=5};
perturb_t perturb_kind_;
std::string emitting_area_;
double perturb_intens_;
// Cached values:
SmartPointer<Gyoto::Metric::KerrBL> kerrbl_;
std::vector<double> tt_;
std::vector<double> area_; // tt_ and area_ contain area of cross section at time tt
size_t nbt_;
int with_cross_;
double sigma_;
double alpha_;
double w1_;
double w2_;
double omr2_;
double omth2_;
double Omegac_;
double lc_;
double g_rr_;
double g_thth_;
bool hold_;
public:
GYOTO_OBJECT;
OscilTorus();
OscilTorus(const OscilTorus &o);
virtual ~OscilTorus();
virtual OscilTorus * clone() const ;
GYOTO_OBJECT_ACCESSORS_UNIT(largeRadius);
GYOTO_OBJECT_ACCESSORS(unsigned long, mode);
GYOTO_OBJECT_ACCESSORS(double, polyCst);
GYOTO_OBJECT_ACCESSORS(double, polyIndex);
GYOTO_OBJECT_ACCESSORS(double, centralDensity);
GYOTO_OBJECT_ACCESSORS_STRING(perturbKind);
GYOTO_OBJECT_ACCESSORS(double, perturbIntens);
GYOTO_OBJECT_ACCESSORS_STRING(emittingArea);
using Generic::metric;
virtual void metric(Gyoto::SmartPointer<Gyoto::Metric::Generic>);
virtual double operator()(double const coord[4]) ;
virtual void getVelocity(double const pos[4], double vel[4]) ;
double emission(double nuem,double,state_t const &,double const *) const;
#ifdef GYOTO_USE_XERCES
virtual void setParameters(Gyoto::FactoryMessenger *fmp) ;
#endif
virtual void updateCachedValues();
void computeXbYb(const double * pos, double & xb, double & yb) ;
// Hook::Listener API //
public:
virtual void tell(Gyoto::Hook::Teller *msg);
};
#endif
GyotoAstrobj.h
Astronomical objects (light emitters).
GyotoKerrBL.h
KerrBL metric.
GYOTO_OBJECT
#define GYOTO_OBJECT
Declare class::properties and class::getProperties().
Definition GyotoObject.h:84
GYOTO_OBJECT_ACCESSORS_UNIT
#define GYOTO_OBJECT_ACCESSORS_UNIT(method)
Declare a quadruplet of accessors to double member that supports unit.
Definition GyotoObject.h:70
GYOTO_OBJECT_ACCESSORS
#define GYOTO_OBJECT_ACCESSORS(type, method)
Declare a pair of accessors to scalar member in a class declaration.
Definition GyotoObject.h:60
GYOTO_OBJECT_ACCESSORS_STRING
#define GYOTO_OBJECT_ACCESSORS_STRING(method)
Declare a pair of accessors to string member in a class declaration.
Definition GyotoObject.h:47
GyotoStandardAstrobj.h
Astronomical objects defined bya a potential/distance.
Gyoto::Astrobj::Generic::metric
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
Gyoto::Astrobj::OscilTorus
Definition GyotoOscilTorus.h:34
Gyoto::Astrobj::OscilTorus::setParameters
virtual void setParameters(Gyoto::FactoryMessenger *fmp)
Main loop in Subcontractor_t function.
Gyoto::Astrobj::OscilTorus::getVelocity
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
Gyoto::Astrobj::OscilTorus::metric
virtual void metric(Gyoto::SmartPointer< Gyoto::Metric::Generic >)
Set the Metric gg_.
Gyoto::Astrobj::OscilTorus::w1_
double w1_
factors appearing in perturbed surf func
Definition GyotoOscilTorus.h:65
Gyoto::Astrobj::OscilTorus::perturb_intens_
double perturb_intens_
Perturbation intensity.
Definition GyotoOscilTorus.h:54
Gyoto::Astrobj::OscilTorus::nbt_
size_t nbt_
numberof tt_
Definition GyotoOscilTorus.h:60
Gyoto::Astrobj::OscilTorus::tell
virtual void tell(Gyoto::Hook::Teller *msg)
Update cached values.
Gyoto::Astrobj::OscilTorus::with_cross_
int with_cross_
is 1 if cross section data are given
Definition GyotoOscilTorus.h:61
Gyoto::Astrobj::OscilTorus::polycst_
double polycst_
Polytropic constant.
Definition GyotoOscilTorus.h:48
Gyoto::Astrobj::OscilTorus::operator()
virtual double operator()(double const coord[4])
Function defining the object interior.
Gyoto::Astrobj::OscilTorus::c_
double c_
Large Radius.
Definition GyotoOscilTorus.h:46
Gyoto::Astrobj::OscilTorus::emitting_area_
std::string emitting_area_
Only for mode=0, file containing time series of cross section area.
Definition GyotoOscilTorus.h:53
Gyoto::Astrobj::OscilTorus::Omegac_
double Omegac_
Omega and l at torus center.
Definition GyotoOscilTorus.h:69
Gyoto::Astrobj::OscilTorus::alpha_
double alpha_
perturbation normalization (oder-unity)
Definition GyotoOscilTorus.h:64
Gyoto::Astrobj::OscilTorus::central_density_
double central_density_
Central density.
Definition GyotoOscilTorus.h:50
Gyoto::Astrobj::OscilTorus::polyindex_
double polyindex_
Polytropic index.
Definition GyotoOscilTorus.h:49
Gyoto::Astrobj::OscilTorus::g_rr_
double g_rr_
metric coef at torus center
Definition GyotoOscilTorus.h:71
Gyoto::Astrobj::OscilTorus::clone
virtual OscilTorus * clone() const
Cloner.
Gyoto::Astrobj::OscilTorus::omr2_
double omr2_
epicyclic freq at torus center
Definition GyotoOscilTorus.h:67
Gyoto::Astrobj::OscilTorus::sigma_
double sigma_
perturbation rescaled pulsation
Definition GyotoOscilTorus.h:63
Gyoto::Astrobj::Standard
Astronomical objects defined bya a potential/distance.
Definition GyotoStandardAstrobj.h:87
Gyoto::FactoryMessenger
Factory / SmartPointee::Subcontractor_t interface.
Definition GyotoFactoryMessenger.h:92
Gyoto::Hook::Listener
I might listen to a Teller.
Definition GyotoHooks.h:64
Gyoto::Hook::Teller
Listen to me and I'll warn you when I change.
Definition GyotoHooks.h:82
Gyoto::SmartPointer
Pointers performing reference counting.
Definition GyotoSmartPointer.h:135
Gyoto::Spectrum::Generic
Spectrum emitted by an Astrobj.
Definition GyotoSpectrum.h:137
Gyoto::Astrobj
Access to astronomical objects.
Definition GyotoAstrobj.h:49
Gyoto::Spectrum
Spectrum of a simple object (e.g. a Gyoto::Astrobj::Star).
Definition GyotoBlackBodySpectrum.h:35
Gyoto
Namespace for the Gyoto library.
Definition GyotoAstrobj.h:44