Gyoto
GyotoThinDisk.h
Go to the documentation of this file.
1
19/*
20 Copyright 2011-2015 Thibaut Paumard, Frederic Vincent
21
22 This file is part of Gyoto.
23
24 Gyoto is free software: you can redistribute it and/or modify
25 it under the terms of the GNU General Public License as published by
26 the Free Software Foundation, either version 3 of the License, or
27 (at your option) any later version.
28
29 Gyoto is distributed in the hope that it will be useful,
30 but WITHOUT ANY WARRANTY; without even the implied warranty of
31 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32 GNU General Public License for more details.
33
34 You should have received a copy of the GNU General Public License
35 along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
36 */
37
38
39#ifndef __GyotoThinDisk_H_
40#define __GyotoThinDisk_H_
41
42namespace Gyoto{
43 namespace Astrobj { class ThinDisk; }
44}
45
46#include <GyotoMetric.h>
47#include <GyotoAstrobj.h>
48#include <GyotoSpectrum.h>
49#include <GyotoFunctors.h>
50
51#ifdef GYOTO_USE_XERCES
52#include <GyotoRegister.h>
53#endif
54
55#include <string>
56
71{
73
74 // Data :
75 // -----
76 protected:
77 double rin_ ;
78 double rout_ ;
79
85 double thickness_;
86 int dir_;
87 unsigned int velocitykind_;
88
89 // Constructors - Destructor
90 // -------------------------
91 public:
93
98 ThinDisk(std::string kind="ThinDisk");
99
100 ThinDisk(const ThinDisk& orig);
101 virtual ThinDisk* clone () const ;
102
103 virtual ~ThinDisk() ;
104
105 // Accessors
106 // ---------
107 public:
108 virtual double innerRadius() const ;
109 virtual double innerRadius(std::string const &) const ;
110 virtual void innerRadius(double);
111 virtual void innerRadius(double, std::string const &);
112 virtual double outerRadius() const ;
113 virtual double outerRadius(std::string const &) const ;
114 virtual void outerRadius(double);
115 virtual void outerRadius(double, std::string const &);
116 virtual double thickness() const ;
117 virtual double thickness(std::string const &) const ;
118 virtual void thickness(double);
119 virtual void thickness(double, std::string const&);
120 virtual int dir() const ;
121 virtual void dir(int);
122 virtual bool corotating() const;
123 virtual void corotating(bool t);
124 virtual std::string velocityKind() const ;
125 virtual void velocityKind(std::string const&);
126
130 virtual double operator()(double const coord[]) ;
131
132 virtual double projectedRadius(double const coord[]) const ;
134
135 virtual double sphericalPhi(double const coord[]) const;
137
139
148 virtual void getVelocity(double const pos[4], double vel[4]) ;
149
150 public:
151 virtual int Impact(Gyoto::Photon* ph, size_t index,
152 Astrobj::Properties *data=NULL) ;
153
154};
155
156
157#endif
Astronomical objects (light emitters)
Classes with an operator() method.
Base class for metric description.
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
Gyoto registers.
Spectrum of a simple object (e.g. Star)
Base class for astronomical object.
Definition: GyotoAstrobj.h:199
Geometrically thin disks and rings.
Definition: GyotoThinDisk.h:71
unsigned int velocitykind_
tag for VelocityKind
Definition: GyotoThinDisk.h:87
virtual int dir() const
Get dir_.
virtual std::string velocityKind() const
Set dir_=t?1:-1.
virtual double innerRadius() const
Get rin_.
double thickness_
disk thickness
Definition: GyotoThinDisk.h:85
virtual ThinDisk * clone() const
Cloner.
virtual double outerRadius() const
Get rout_.
virtual double projectedRadius(double const coord[]) const
Projected radius of position coord on the equatorial plane.
double rout_
disk outer radius in geometrical units
Definition: GyotoThinDisk.h:78
virtual double thickness() const
Get thickness_.
virtual double sphericalPhi(double const coord[]) const
Longitude.
double rin_
disk inner radius in geometrical units
Definition: GyotoThinDisk.h:77
virtual int Impact(Gyoto::Photon *ph, size_t index, Astrobj::Properties *data=NULL)
Does a photon at these coordinates impact the object?
int dir_
1 for corotating (default), -1 for counterrotating.
Definition: GyotoThinDisk.h:86
virtual void getVelocity(double const pos[4], double vel[4])
Get fluid 4-velocity at point.
A functor like double (func) (double const data[])
Definition: GyotoFunctors.h:44
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:135
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43