GyotoThinDisk.h
Go to the documentation of this file.
/*
Copyright 2011-2015 Thibaut Paumard, Frederic Vincent
This file is part of Gyoto.
Gyoto is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gyoto is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GyotoThinDisk_H_
#define __GyotoThinDisk_H_
namespace Gyoto{
namespace Astrobj { class ThinDisk; }
}
#include <GyotoMetric.h>
#include <GyotoAstrobj.h>
#include <GyotoSpectrum.h>
#include <GyotoFunctors.h>
#ifdef GYOTO_USE_XERCES
#include <GyotoRegister.h>
#endif
#include <string>
class Gyoto::Astrobj::ThinDisk :
public Gyoto::Astrobj::Generic,
public Gyoto::Functor::Double_constDoubleArray
{
friend class Gyoto::SmartPointer<Gyoto::Astrobj::ThinDisk>;
// Data :
// -----
protected:
double rin_ ;
double rout_ ;
double thickness_;
int dir_;
unsigned int velocitykind_;
// Constructors - Destructor
// -------------------------
public:
GYOTO_OBJECT;
ThinDisk(std::string kind="ThinDisk");
ThinDisk(const ThinDisk& orig);
virtual ThinDisk* clone () const ;
virtual ~ThinDisk() ;
// Accessors
// ---------
public:
virtual double innerRadius() const ;
virtual double innerRadius(std::string const &) const ;
virtual void innerRadius(double);
virtual void innerRadius(double, std::string const &);
virtual double outerRadius() const ;
virtual double outerRadius(std::string const &) const ;
virtual void outerRadius(double);
virtual void outerRadius(double, std::string const &);
virtual double thickness() const ;
virtual double thickness(std::string const &) const ;
virtual void thickness(double);
virtual void thickness(double, std::string const&);
virtual int dir() const ;
virtual void dir(int);
virtual bool corotating() const;
virtual void corotating(bool t);
virtual std::string velocityKind() const ;
virtual void velocityKind(std::string const&);
virtual double operator()(double const coord[]) ;
virtual double projectedRadius(double const coord[]) const ;
virtual double sphericalPhi(double const coord[]) const;
virtual void getVelocity(double const pos[4], double vel[4]) ;
public:
virtual int Impact(Gyoto::Photon* ph, size_t index,
Astrobj::Properties *data=NULL) ;
};
#endif
GyotoAstrobj.h
Astronomical objects (light emitters).
GyotoFunctors.h
Classes with an operator() method.
GyotoMetric.h
Base class for metric description.
GYOTO_OBJECT
#define GYOTO_OBJECT
Declare class::properties and class::getProperties().
Definition GyotoObject.h:84
GyotoRegister.h
Gyoto registers.
GyotoSpectrum.h
Spectrum of a simple object (e.g. Star).
Gyoto::Astrobj::Generic
Base class for astronomical object.
Definition GyotoAstrobj.h:200
Gyoto::Astrobj::ThinDisk
Geometrically thin disks and rings.
Definition GyotoThinDisk.h:71
Gyoto::Astrobj::ThinDisk::velocitykind_
unsigned int velocitykind_
tag for VelocityKind
Definition GyotoThinDisk.h:87
Gyoto::Astrobj::ThinDisk::dir
virtual int dir() const
Get dir_.
Gyoto::Astrobj::ThinDisk::velocityKind
virtual std::string velocityKind() const
Set dir_=t?1:-1.
Gyoto::Astrobj::ThinDisk::innerRadius
virtual double innerRadius() const
Get rin_.
Gyoto::Astrobj::ThinDisk::ThinDisk
ThinDisk(std::string kind="ThinDisk")
Default constructor.
Gyoto::Astrobj::ThinDisk::thickness_
double thickness_
disk thickness
Definition GyotoThinDisk.h:85
Gyoto::Astrobj::ThinDisk::clone
virtual ThinDisk * clone() const
Cloner.
Gyoto::Astrobj::ThinDisk::outerRadius
virtual double outerRadius() const
Get rout_.
Gyoto::Astrobj::ThinDisk::projectedRadius
virtual double projectedRadius(double const coord[]) const
Projected radius of position coord on the equatorial plane.
Gyoto::Astrobj::ThinDisk::rout_
double rout_
disk outer radius in geometrical units
Definition GyotoThinDisk.h:78
Gyoto::Astrobj::ThinDisk::thickness
virtual double thickness() const
Get thickness_.
Gyoto::Astrobj::ThinDisk::sphericalPhi
virtual double sphericalPhi(double const coord[]) const
Longitude.
Gyoto::Astrobj::ThinDisk::rin_
double rin_
disk inner radius in geometrical units
Definition GyotoThinDisk.h:77
Gyoto::Astrobj::ThinDisk::Impact
virtual int Impact(Gyoto::Photon *ph, size_t index, Astrobj::Properties *data=NULL)
Does a photon at these coordinates impact the object?
Gyoto::Astrobj::ThinDisk::dir_
int dir_
1 for corotating (default), -1 for counterrotating.
Definition GyotoThinDisk.h:86
Gyoto::Astrobj::ThinDisk::getVelocity
virtual void getVelocity(double const pos[4], double vel[4])
Get fluid 4-velocity at point.
Gyoto::Functor::Double_constDoubleArray
A functor like double (func) (double const data[]).
Definition GyotoFunctors.h:44
Gyoto::SmartPointer
Pointers performing reference counting.
Definition GyotoSmartPointer.h:135
Gyoto::Astrobj
Access to astronomical objects.
Definition GyotoAstrobj.h:49
Gyoto
Namespace for the Gyoto library.
Definition GyotoAstrobj.h:44