Gyoto
GyotoDeformedTorus.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 __DeformedTorus_h
15 #define __DeformedTorus_h
16 
17 #include <GyotoAstrobj.h>
18 #include <GyotoStandardAstrobj.h>
19 #include <GyotoKerrBL.h>
20 
21 
22 namespace Gyoto {
23  namespace Astrobj {
24  class DeformedTorus;
25  };
26  class FactoryMessenger;
27  namespace Spectrum {
28  class Generic;
29  }
30 };
31 
33 : public Gyoto::Astrobj::Standard {
35 
36  private:
37  SmartPointer<Gyoto::Metric::KerrBL> gg_;
38  SmartPointer<Spectrum::Generic> spectrum_;
39  double c_;
40  unsigned long mode_;
41  double param_beta_;
42  double param_beta_st_;
43  double param_eta_;
44  enum perturb_t {RadialTranslation=1,
45  VerticalTranslation=2,
46  Rotation=3,
47  Expansion=4,
48  RadialShear=5,
49  VerticalShear=6,
50  PureShear=7};
51  perturb_t perturb_kind_;
52  public:
54  DeformedTorus();
55  DeformedTorus(const DeformedTorus &o);
56  virtual ~DeformedTorus();
57  virtual DeformedTorus * clone() const ;
58 
59  // Standard accessors
60  GYOTO_OBJECT_ACCESSORS(SmartPointer<Spectrum::Generic>, spectrum);
61  GYOTO_OBJECT_ACCESSORS(double, largeRadius);
62  GYOTO_OBJECT_ACCESSORS(double, beta);
63  GYOTO_OBJECT_ACCESSORS(double, betaSt);
64  GYOTO_OBJECT_ACCESSORS(double, eta);
65  GYOTO_OBJECT_ACCESSORS(unsigned long, mode);
66  GYOTO_OBJECT_ACCESSORS_STRING(perturbKind);
67 
68  using Generic::metric;
70  virtual double operator()(double const coord[4]) ;
72  virtual void getVelocity(double const pos[4], double vel[4]) ;
73  /*virtual int Impact(Gyoto::Photon* ph, size_t index,
74  Astrobj::Properties *data=NULL);*/
75  double emission(double nuem,double,state_t const &,double const *) const;
76 #endif
77 };
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
Definition: GyotoDeformedTorus.h:32
Astronomical objects (light emitters)
Astronomical objects defined bya a potential/distance.
virtual double operator()(double const coord[4])
Called by Astrobj::Generic::Impact()
virtual DeformedTorus * clone() const
Cloner.
KerrBL metric.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
Pointers performing reference counting.
Definition: GyotoProperty.h:45
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
Astronomical objects defined bya a potential/distance.
Definition: GyotoStandardAstrobj.h:84