GyotoStandardAstrobj.h
Go to the documentation of this file.
/*
Copyright 2011 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 __GyotoStandardAstrobj_H_
#define __GyotoStandardAstrobj_H_
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include "GyotoAstrobj.h"
#include "GyotoFunctors.h"
namespace Gyoto{
namespace Astrobj {
class Standard;
}
}
class Gyoto::Astrobj::Standard :
public Gyoto::Astrobj::Generic,
public Gyoto::Functor::Double_constDoubleArray
{
friend class Gyoto::SmartPointer<Gyoto::Astrobj::Standard>;
// Data :
// -----
protected:
double critical_value_;
double safety_value_;
double delta_inobj_;
// Constructors - Destructor
// -------------------------
public:
GYOTO_OBJECT;
Standard();
Standard(double radmax);
Standard(std::string kind);
Standard(const Standard& ) ;
virtual ~Standard() ;
// Accessors
// ---------
public:
virtual void safetyValue(double val) ;
virtual double safetyValue() const ;
double deltaInObj() const;
void deltaInObj(double val);
// Outputs
// -------
public:
virtual int Impact(Gyoto::Photon* ph, size_t index,
Astrobj::Properties *data=NULL) ;
virtual double operator()(double const coord[4]) = 0;
virtual void getVelocity(double const pos[4], double vel[4]) = 0 ;
virtual double giveDelta(double coord[8]);
};
#endif
GyotoAstrobj.h
Astronomical objects (light emitters).
GyotoFunctors.h
Classes with an operator() method.
GYOTO_OBJECT
#define GYOTO_OBJECT
Declare class::properties and class::getProperties().
Definition GyotoObject.h:84
Gyoto::Astrobj::Generic
Base class for astronomical object.
Definition GyotoAstrobj.h:200
Gyoto::Astrobj::Standard
Astronomical objects defined bya a potential/distance.
Definition GyotoStandardAstrobj.h:87
Gyoto::Astrobj::Standard::critical_value_
double critical_value_
See operator()(double const coord[4]).
Definition GyotoStandardAstrobj.h:94
Gyoto::Astrobj::Standard::safetyValue
virtual void safetyValue(double val)
Set Standard::safety_value_.
Gyoto::Astrobj::Standard::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::Standard::delta_inobj_
double delta_inobj_
Constant value of the integration step inside object, in units of the compact object's mass M.
Definition GyotoStandardAstrobj.h:96
Gyoto::Astrobj::Standard::Standard
Standard()
Default constructor.
Gyoto::Astrobj::Standard::deltaInObj
double deltaInObj() const
Get Generic::delta_inobj_.
Gyoto::Astrobj::Standard::giveDelta
virtual double giveDelta(double coord[8])
Maximum δ inside object.
Gyoto::Astrobj::Standard::getVelocity
virtual void getVelocity(double const pos[4], double vel[4])=0
Fluid velocity field.
Gyoto::Astrobj::Standard::safety_value_
double safety_value_
See operator()(double const coord[4]).
Definition GyotoStandardAstrobj.h:95
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