Gyoto
GyotoThinDiskProfile.h
Go to the documentation of this file.
1
9/*
10 Copyright 2020 Frederic Vincent, Thibaut Paumard
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
35namespace Gyoto{
36 namespace Astrobj { class ThinDiskProfile; }
37}
38
39//#include <GyotoMetric.h>
40#include <GyotoThinDisk.h>
41
50 private:
51 double* model_param_;
53 protected:
54
55 // Constructors - Destructor
56 // -------------------------
57 public:
60
62
63 ThinDiskProfile(const ThinDiskProfile& ) ;
64 virtual ThinDiskProfile* clone () const;
65
66 virtual ~ThinDiskProfile() ;
67
68 // Accessors
69 // ---------
70 public:
71 bool circularMotion() const;
72 void circularMotion(bool circ);
73
74 void model_param(std::vector<double> const &v);
75 std::vector<double> model_param() const;
76
77 public:
78 virtual double emission(double nu_em, double dsem,
79 state_t const &c_ph,double const c_obj[8]=NULL) const;
80
81 virtual void getVelocity(double const pos[4], double vel[4]);
82
83 virtual void processHitQuantities(Photon* ph,
84 state_t const &coord_ph_hit,
85 double const *coord_obj_hit,
86 double dt,
87 Properties* data) const;
88
89};
90
91#endif
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition GyotoObject.h:99
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition GyotoObject.h:84
Geometrically thin disks and rings.
Geometrically thin disks and rings.
Definition GyotoThinDisk.h:71
A subclass of ThinDisk emitting according to some specified profile that should be hardcoded in emiss...
Definition GyotoThinDiskProfile.h:48
bool circular_motion_
True if motion is circular, else radial fall.
Definition GyotoThinDiskProfile.h:52
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 ThinDiskProfile * clone() const
Cloner.
double * model_param_
A vector containing an arbitrary number of parameters necessary to compute the disk image.
Definition GyotoThinDiskProfile.h:51
virtual void getVelocity(double const pos[4], double vel[4])
Get fluid 4-velocity at point.
virtual double emission(double nu_em, double dsem, state_t const &c_ph, double const c_obj[8]=NULL) const
Specific intensity Iν
Pointers performing reference counting.
Definition GyotoSmartPointer.h:135
Namespace for the Gyoto library.
Definition GyotoAstrobj.h:44