Gyoto
|
Black Body. More...
#include <GyotoBlackBodySpectrum.h>
Public Member Functions | |
BlackBody (double T, double scaling=1.) | |
Constructor setting T_ and cst_. | |
virtual BlackBody * | clone () const |
Cloner. | |
double | getTemperature () const |
Get constant. | |
void | setTemperature (double) |
Set constant. | |
double | getScaling () const |
Get exponent. | |
void | setScaling (double) |
Set exponent. | |
virtual double | operator() (double nu) const |
I_nu = mySpectrum(nu), nu in Hz. Assumes optically thick regime. | |
virtual void | setParameter (std::string name, std::string content, std::string unit) |
To be called by fillElement() | |
virtual void | fillElement (FactoryMessenger *fmp) const |
called from Factory More... | |
const std::string | getKind () const |
Get spectrum kind. | |
virtual double | operator() (double nu, double opacity, double ds) const |
I_nu in optically thin regime. More... | |
virtual double | integrate (double nu1, double nu2) |
Integrate optically thick I_nu. More... | |
virtual double | integrate (double nu1, double nu2, const Spectrum::Generic *opacity, double ds) |
Integrate optically thin I_nu. More... | |
virtual void | setParameters (FactoryMessenger *fmp) |
Main loop in Subcontractor_t function. More... | |
Protected Types | |
typedef Gyoto::SmartPointer < Gyoto::SmartPointee > | Subcontractor_t (Gyoto::FactoryMessenger *) |
A subcontractor builds an object upon order from the Factory. More... | |
Protected Member Functions | |
void | incRefCount () |
Increment the reference counter. Warning: Don't mess with the counter. | |
int | decRefCount () |
Decrement the reference counter and return current value. Warning: Don't mess with the counter. | |
int | getRefCount () |
Get the current number of references. | |
Protected Attributes | |
double | T_ |
Temperature (K) | |
double | cst_ |
Scaling constant. | |
double | Tm1_ |
1./T_; | |
std::string | kind_ |
e.g. constants, blackbody... | |
Friends | |
class | Gyoto::SmartPointer< Gyoto::Spectrum::BlackBody > |
Black Body.
Light emitted by e.g. a Star.
Example XML entity:
|
inherited |
A subcontractor builds an object upon order from the Factory.
Various classes need to provide a subcontractor to be able to instanciate themselves upon order from the Factory. A subcontractor is a function (often a static member function) which accepts a pointer to a FactoryMessenger as unique parameter, communicates with the Factory using this messenger to read an XML description of the object to build, and returns this objet. SmartPointee::Subcontractor_t* is just generic enough a typedef to cast to and from other subcontractor types: Astrobj::Subcontractor_t, Metric::Subcontractor_t, Spectrum::Subcontractor_t. A subcontractor needs to be registered using the relevant Register() function: Astrobj::Register(), Metric::Register(), Spectrum::Register().
|
virtual |
called from Factory
Spectrum implementations should impement fillElement to save their parameters to XML and call the generic implementation to save generic parts.
Reimplemented from Gyoto::Spectrum::Generic.
|
virtualinherited |
Integrate optically thick I_nu.
See operator()(double nu) const
nu1,nu2 | boundaries for the integration |
|
virtualinherited |
Integrate optically thin I_nu.
See operator()(double nu, double opacity, double ds) const
nu1,nu2 | boundaries for the integration |
opacity | the frequency-dependent opacity law given as a pointer to a Gyoto::Spectrum::Generic sub-class instance |
ds | the element length for spatial integration |
|
virtualinherited |
I_nu in optically thin regime.
Generic implementation assumes emissivity = opacity.
nu | frequency in Hz |
opacity | such that opacity*ds=optical thickness. |
ds | in geometrical units |
|
virtualinherited |
Main loop in Subcontractor_t function.
The Subcontractor_t function for each Spectrum kind should look somewhat like this:
Each spectrum kind should implement setParameter(string name, string content) to interpret the individual XML elements. setParameters() can be overloaded in case the specific Spectrum class needs low level access to the FactoryMessenger (see Astrobj::UniformSphere::setParameters()).