GyotoDeformedTorus.h
Go to the documentation of this file.
/*
* Copyright (c) 2013, 2018 Frederic Vincent & Thibaut Paumard
*
*
*/
#ifndef __DeformedTorus_h
#define __DeformedTorus_h
#include <GyotoAstrobj.h>
#include <GyotoStandardAstrobj.h>
#include <GyotoKerrBL.h>
namespace Gyoto {
namespace Astrobj {
class DeformedTorus;
};
class FactoryMessenger;
namespace Spectrum {
class Generic;
}
};
class Gyoto::Astrobj::DeformedTorus
: public Gyoto::Astrobj::Standard {
friend class Gyoto::SmartPointer<Gyoto::Astrobj::DeformedTorus>;
private:
SmartPointer<Gyoto::Metric::KerrBL> gg_;
SmartPointer<Spectrum::Generic> spectrum_;
double c_;
unsigned long mode_;
double param_beta_;
double param_beta_st_;
double param_eta_;
enum perturb_t {RadialTranslation=1,
VerticalTranslation=2,
Rotation=3,
Expansion=4,
RadialShear=5,
VerticalShear=6,
PureShear=7};
perturb_t perturb_kind_;
public:
GYOTO_OBJECT;
DeformedTorus();
DeformedTorus(const DeformedTorus &o);
virtual ~DeformedTorus();
virtual DeformedTorus * clone() const ;
// Standard accessors
GYOTO_OBJECT_ACCESSORS(SmartPointer<Spectrum::Generic>, spectrum);
GYOTO_OBJECT_ACCESSORS(double, largeRadius);
GYOTO_OBJECT_ACCESSORS(double, beta);
GYOTO_OBJECT_ACCESSORS(double, betaSt);
GYOTO_OBJECT_ACCESSORS(double, eta);
GYOTO_OBJECT_ACCESSORS(unsigned long, mode);
GYOTO_OBJECT_ACCESSORS_STRING(perturbKind);
using Generic::metric;
virtual void metric(Gyoto::SmartPointer<Gyoto::Metric::Generic>);
virtual double operator()(double const coord[4]) ;
virtual void getVelocity(double const pos[4], double vel[4]) ;
/*virtual int Impact(Gyoto::Photon* ph, size_t index,
Astrobj::Properties *data=NULL);*/
double emission(double nuem,double,state_t const &,double const *) const;
#endif
};
GyotoAstrobj.h
Astronomical objects (light emitters).
GyotoKerrBL.h
KerrBL metric.
GYOTO_OBJECT
#define GYOTO_OBJECT
Declare class::properties and class::getProperties().
Definition GyotoObject.h:84
GYOTO_OBJECT_ACCESSORS
#define GYOTO_OBJECT_ACCESSORS(type, method)
Declare a pair of accessors to scalar member in a class declaration.
Definition GyotoObject.h:60
GYOTO_OBJECT_ACCESSORS_STRING
#define GYOTO_OBJECT_ACCESSORS_STRING(method)
Declare a pair of accessors to string member in a class declaration.
Definition GyotoObject.h:47
GyotoStandardAstrobj.h
Astronomical objects defined bya a potential/distance.
Gyoto::Astrobj::DeformedTorus
Definition GyotoDeformedTorus.h:33
Gyoto::Astrobj::DeformedTorus::operator()
virtual double operator()(double const coord[4])
Called by Astrobj::Generic::Impact().
Gyoto::Astrobj::DeformedTorus::metric
virtual void metric(Gyoto::SmartPointer< Gyoto::Metric::Generic >)
Set the Metric gg_.
Gyoto::Astrobj::DeformedTorus::clone
virtual DeformedTorus * clone() const
Cloner.
Gyoto::Astrobj::DeformedTorus::getVelocity
virtual void getVelocity(double const pos[4], double vel[4])
Fluid velocity field.
Gyoto::Astrobj::Generic::metric
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
Gyoto::Astrobj::Standard
Astronomical objects defined bya a potential/distance.
Definition GyotoStandardAstrobj.h:87
Gyoto::FactoryMessenger
Factory / SmartPointee::Subcontractor_t interface.
Definition GyotoFactoryMessenger.h:92
Gyoto::SmartPointer
Pointers performing reference counting.
Definition GyotoSmartPointer.h:135
Gyoto::Spectrum::Generic
Spectrum emitted by an Astrobj.
Definition GyotoSpectrum.h:137
Gyoto::Astrobj
Access to astronomical objects.
Definition GyotoAstrobj.h:49
Gyoto::Spectrum
Spectrum of a simple object (e.g. a Gyoto::Astrobj::Star).
Definition GyotoBlackBodySpectrum.h:35
Gyoto
Namespace for the Gyoto library.
Definition GyotoAstrobj.h:44