Gyoto
GyotoStochasticThinDisk.h
Go to the documentation of this file.
1 
8 /*
9  Copyright 2025 Irene Urso
10 
11  This file is part of Gyoto.
12 
13  Gyoto is free software: you can redistribute it and/or modify
14  it under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  Gyoto is distributed in the hope that it will be useful,
19  but WITHOUT ANY WARRANTY; without even the implied warranty of
20  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  GNU General Public License for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
25  */
26 
27 #ifndef __GyotoStochasticThinDisk_H_
28 #define __GyotoStochasticThinDisk_H_
29 
30 #include <iostream>
31 #include <fstream>
32 #include <iomanip>
33 
34 namespace Gyoto{
35  namespace Astrobj { class StochasticThinDisk; }
36 }
37 
38 //#include <GyotoMetric.h>
39 #include <GyotoThinDisk.h>
40 
48  private:
49  double* model_param_;
50  // Precomputed modal arrays (single 1D vectors)
51  std::vector<double> Cmn_; // Amplitudes
52  std::vector<double> Nmn_; // Amplitudes normalisation
53  std::vector<double> Phimn_; // Phi phases
54  std::vector<double> Psimn_; // Psi phases
55  std::vector<double> Kmn_; // Bessel zeros
56  protected:
57  unsigned int equationkind_;
58  unsigned int motionkind_;
59  // Constructors - Destructor
60  // -------------------------
61  public:
64 
66 
67  StochasticThinDisk(const StochasticThinDisk& ) ;
68  virtual StochasticThinDisk* clone () const;
69 
70  virtual ~StochasticThinDisk() ;
71 
72  // Accessors
73  // ---------
74  public:
75  virtual std::string equationKind() const ;
76  virtual void equationKind(std::string const&);
77  virtual std::string motionKind() const ;
78  virtual void motionKind(std::string const&);
79 
80  void model_param(std::vector<double> const &v);
81  std::vector<double> model_param() const;
82 
83  virtual void modalQuantities();
84 
85  public:
86  virtual double spectrum(double const alpha_r, double const alpha_theta, int const m, int const n) const;
87  virtual double solution(double const c_obj[8]=NULL) const;
88  virtual double envelope(double nu_em, state_t const &c_ph,double const c_obj[8]=NULL) const;
89 
90  virtual double emission(double nu_em, state_t const &c_ph,double const c_obj[8]=NULL) const;
91  virtual void getVelocity(double const pos[4], double vel[4]);
92 
93  virtual void processHitQuantities(Photon* ph,
94  state_t const &coord_ph_hit,
95  double const *coord_obj_hit,
96  double dt,
97  Properties* data) const;
98 
99 };
100 
101 #endif
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition: GyotoObject.h:99
virtual void getVelocity(double const pos[4], double vel[4])
Get fluid 4-velocity at point.
A subclass of ThinDisk emitting according to some stochastic profile.
Definition: GyotoStochasticThinDisk.h:46
Geometrically thin disks and rings.
Definition: GyotoThinDisk.h:68
double * model_param_
A vector containing an arbitrary number of parameters necessary to compute the disk image...
Definition: GyotoStochasticThinDisk.h:49
virtual std::string motionKind() const
Get MotionKind.
Geometrically thin disks and rings.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:46
virtual StochasticThinDisk * clone() const
Cloner.
Pointers performing reference counting.
Definition: GyotoProperty.h:45
unsigned int motionkind_
tag for MotionKind
Definition: GyotoStochasticThinDisk.h:58
virtual void processHitQuantities(Photon *ph, state_t const &coord_ph_hit, double const *coord_obj_hit, double dt, Properties *data) const
Fills Astrobj::Properties.
virtual std::string equationKind() const
Get EquationKind.
unsigned int equationkind_
tag for EquationKind
Definition: GyotoStochasticThinDisk.h:57