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