Gyoto
GyotoOscilTorus.h
Go to the documentation of this file.
1 
8 /*
9  * Copyright (c) 2013, 2018 Frederic Vincent & Thibaut Paumard
10  *
11  *
12  */
13 
14 #ifndef __OscilTorus_h
15 #define __OscilTorus_h
16 
17 #include <GyotoAstrobj.h>
18 #include <GyotoStandardAstrobj.h>
19 #include <GyotoKerrBL.h>
20 
21 
22 namespace Gyoto {
23  namespace Astrobj {
24  class OscilTorus;
25  };
26  class FactoryMessenger;
27  namespace Spectrum {
28  class Generic;
29  }
30 };
31 
34  public Hook::Listener {
36 
37  private:
38  // Members corresponding to properties:
46  double c_;
47  unsigned long mode_;
48  double polycst_;
49  double polyindex_;
51  enum perturb_t {Radial=1, Vertical=2, X=3, Plus=4, Breathing=5};
52  perturb_t perturb_kind_;
53  std::string emitting_area_;
54  double perturb_intens_;
55 
56  // Cached values:
58  std::vector<double> tt_;
59  std::vector<double> area_; // tt_ and area_ contain area of cross section at time tt
60  size_t nbt_;
62 
63  double sigma_;
64  double alpha_;
65  double w1_;
66  double w2_;
67  double omr2_;
68  double omth2_;
69  double Omegac_;
70  double lc_;
71  double g_rr_;
72  double g_thth_;
73  bool hold_;
74 
75  public:
77  OscilTorus();
78  OscilTorus(const OscilTorus &o);
79  virtual ~OscilTorus();
80  virtual OscilTorus * clone() const ;
81 
82  GYOTO_OBJECT_ACCESSORS_UNIT(largeRadius);
83  GYOTO_OBJECT_ACCESSORS(unsigned long, mode);
84  GYOTO_OBJECT_ACCESSORS(double, polyCst);
85  GYOTO_OBJECT_ACCESSORS(double, polyIndex);
86  GYOTO_OBJECT_ACCESSORS(double, centralDensity);
87  GYOTO_OBJECT_ACCESSORS_STRING(perturbKind);
88  GYOTO_OBJECT_ACCESSORS(double, perturbIntens);
89  GYOTO_OBJECT_ACCESSORS_STRING(emittingArea);
90  using Generic::metric;
92 
93  virtual double operator()(double const coord[4]) ;
94  virtual void getVelocity(double const pos[4], double vel[4]) ;
95  double emission(double nuem,double,state_t const &,double const *) const;
96 
97 #ifdef GYOTO_USE_XERCES
99 #endif
100 
101  virtual void updateCachedValues();
102  void computeXbYb(const double * pos, double & xb, double & yb) ;
103 
104  // Hook::Listener API //
105  public:
113  virtual void tell(Gyoto::Hook::Teller *msg);
114 
115 };
116 
117 #endif
Gyoto::Astrobj::OscilTorus::c_
double c_
Large Radius.
Definition: GyotoOscilTorus.h:46
Gyoto::Hook::Listener
I might listen to a Teller.
Definition: GyotoHooks.h:64
Gyoto::Astrobj::OscilTorus::sigma_
double sigma_
perturbation rescaled pulsation
Definition: GyotoOscilTorus.h:63
GYOTO_OBJECT
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
Gyoto::Astrobj::OscilTorus::perturb_intens_
double perturb_intens_
Perturbation intensity.
Definition: GyotoOscilTorus.h:54
Gyoto::Astrobj::OscilTorus::central_density_
double central_density_
Central density.
Definition: GyotoOscilTorus.h:50
Gyoto::Astrobj::OscilTorus::getVelocity
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
Gyoto::Astrobj::OscilTorus::nbt_
size_t nbt_
numberof tt_
Definition: GyotoOscilTorus.h:60
Gyoto::FactoryMessenger
Factory / SmartPointee::Subcontractor_t interface.
Definition: GyotoFactoryMessenger.h:92
Gyoto::Astrobj::OscilTorus::setParameters
virtual void setParameters(Gyoto::FactoryMessenger *fmp)
Main loop in Subcontractor_t function.
GyotoAstrobj.h
Astronomical objects (light emitters)
Gyoto::Astrobj::OscilTorus::with_cross_
int with_cross_
is 1 if cross section data are given
Definition: GyotoOscilTorus.h:61
Gyoto::Astrobj::OscilTorus::Omegac_
double Omegac_
Omega and l at torus center.
Definition: GyotoOscilTorus.h:69
Gyoto::Astrobj::OscilTorus::tell
virtual void tell(Gyoto::Hook::Teller *msg)
Update cached values.
Gyoto::Astrobj::OscilTorus::polyindex_
double polyindex_
Polytropic index.
Definition: GyotoOscilTorus.h:49
GyotoKerrBL.h
KerrBL metric.
Gyoto::Astrobj::OscilTorus::omr2_
double omr2_
epicyclic freq at torus center
Definition: GyotoOscilTorus.h:67
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
GyotoStandardAstrobj.h
Astronomical objects defined bya a potential/distance.
Gyoto::Astrobj::OscilTorus::w1_
double w1_
factors appearing in perturbed surf func
Definition: GyotoOscilTorus.h:65
Gyoto
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
Gyoto::Astrobj::OscilTorus::operator()
virtual double operator()(double const coord[4])
Function defining the object interior.
Gyoto::Astrobj::OscilTorus::g_rr_
double g_rr_
metric coef at torus center
Definition: GyotoOscilTorus.h:71
Gyoto::SmartPointer
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:135
Gyoto::Hook::Teller
Listen to me and I'll warn you when I change.
Definition: GyotoHooks.h:82
Gyoto::Astrobj::OscilTorus::polycst_
double polycst_
Polytropic constant.
Definition: GyotoOscilTorus.h:48
Gyoto::Astrobj::OscilTorus::alpha_
double alpha_
perturbation normalization (oder-unity)
Definition: GyotoOscilTorus.h:64
Gyoto::Astrobj::OscilTorus::clone
virtual OscilTorus * clone() const
Cloner.
Gyoto::Astrobj::Standard
Astronomical objects defined bya a potential/distance.
Definition: GyotoStandardAstrobj.h:87
Gyoto::Astrobj::OscilTorus
Definition: GyotoOscilTorus.h:34
Gyoto::Astrobj::OscilTorus::metric
virtual void metric(Gyoto::SmartPointer< Gyoto::Metric::Generic >)
Set the Metric gg_.
Gyoto::Astrobj::Generic::metric
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.