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
98  virtual void setParameters(Gyoto::FactoryMessenger *fmp) ;
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
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
std::string emitting_area_
Only for mode=0, file containing time series of cross section area.
Definition: GyotoOscilTorus.h:53
Astronomical objects (light emitters)
double alpha_
perturbation normalization (oder-unity)
Definition: GyotoOscilTorus.h:64
double g_rr_
metric coef at torus center
Definition: GyotoOscilTorus.h:71
Factory / SmartPointee::Subcontractor_t interface.
Definition: GyotoFactoryMessenger.h:92
virtual OscilTorus * clone() const
Cloner.
Astronomical objects defined bya a potential/distance.
double polycst_
Polytropic constant.
Definition: GyotoOscilTorus.h:48
double perturb_intens_
Perturbation intensity.
Definition: GyotoOscilTorus.h:54
Definition: GyotoOscilTorus.h:32
double c_
Large Radius.
Definition: GyotoOscilTorus.h:46
KerrBL metric.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
double central_density_
Central density.
Definition: GyotoOscilTorus.h:50
Pointers performing reference counting.
Definition: GyotoProperty.h:45
I might listen to a Teller.
Definition: GyotoHooks.h:64
virtual void setParameters(Gyoto::FactoryMessenger *fmp)
Main loop in Subcontractor_t function.
double sigma_
perturbation rescaled pulsation
Definition: GyotoOscilTorus.h:63
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
virtual void tell(Gyoto::Hook::Teller *msg)
Update cached values.
int with_cross_
is 1 if cross section data are given
Definition: GyotoOscilTorus.h:61
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
size_t nbt_
numberof tt_
Definition: GyotoOscilTorus.h:60
double omr2_
epicyclic freq at torus center
Definition: GyotoOscilTorus.h:67
double w1_
factors appearing in perturbed surf func
Definition: GyotoOscilTorus.h:65
Astronomical objects defined bya a potential/distance.
Definition: GyotoStandardAstrobj.h:84
double Omegac_
Omega and l at torus center.
Definition: GyotoOscilTorus.h:69
Listen to me and I&#39;ll warn you when I change.
Definition: GyotoHooks.h:82
double polyindex_
Polytropic index.
Definition: GyotoOscilTorus.h:49
virtual double operator()(double const coord[4])
Function defining the object interior.