Manticore  Version 1.0
Physics of Molecular Clouds
Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
manticore::Graybody Class Reference

Graybody emission model. More...

#include <Graybody.h>

Collaboration diagram for manticore::Graybody:
Collaboration graph
[legend]

Public Member Functions

 Graybody (Dust &dust, double err=1e-3)
 Default constructor. More...
 
 Graybody (const Graybody &g)
 Copy constructor. More...
 
double Bnu (double nu, double T) const
 Blackbody specific intensity (erg/cm^2/s/Hz/sr). More...
 
double dBnu_dT (double nu, double T) const
 Blackbody specific intensity T-derivative (erg/cm^2/s/Hz/sr/K). More...
 
double dF_dS (double T, double Sigma, const Detector *detect=nullptr, double sr=1.0) const
 Graybody integrated flux Sigma-derivative (erg/s/g). More...
 
double dF_dT (double T, double Sigma, const Detector *detect=nullptr, double sr=1.0) const
 Graybody integrated flux T-derivative (erg/cm^2/s/K). More...
 
double dInu_dS (double nu, double T, double Sigma) const
 Graybody specific intensity Sigma-derivative (erg/s/Hz/sr/g). More...
 
double dInu_dT (double nu, double T, double Sigma) const
 Graybody specific intensity T-derivative (erg/cm^2/s/Hz/sr/K). More...
 
Dustdust () noexcept
 Dust model reference. More...
 
const Dustdust () const noexcept
 Dust model reference (const). More...
 
double F (double T, double Sigma, const Detector *detect=nullptr, double sr=1.0) const
 Graybody integrated flux (erg/cm^2/s). More...
 
double Inu (double nu, double T, double Sigma) const
 Graybody specific intensity (erg/cm^2/s/Hz/sr). More...
 

Static Public Attributes

static constexpr double B0 = 2.0*h_Planck/(c_light*c_light)
 Blackbody convenience value. More...
 

Protected Member Functions

double Itot (double(Graybody::*I)(double, double, double) const, double T, double Sigma, const Detector *detect=nullptr, double sr=1.0) const
 Graybody integrated flux variant (erg/cm^2/s/??). More...
 

Protected Attributes

Dustdust_
 Dust model. More...
 
double err_
 Integration relative error. More...
 
gsl_integration_workspace * integ_
 Integration workspace. More...
 

Static Protected Attributes

static constexpr int intKey = GSL_INTEG_GAUSS41
 Integration rule key. More...
 
static constexpr size_t subLimit = 512
 Integral subdivision limit. More...
 

Detailed Description

Graybody emission model.

A graybody is a blackbody emitter modified by an optical depth factor:

\[ I^{\rm gray}_\nu = (1 - e^{-\tau})B_\nu(T), \]

where \(\tau = \tau(\nu; \Sigma)\) is the optical depth, \(\Sigma\) is the mass column density and \(B_\nu(T)\) is the Planck function:

\[ B_\nu(T) = {2h\nu^3\over c^2}{1\over e^{h\nu/kT}-1}. \]

The functional form for \(\tau\) depends on the details of the dust model. This class accepts an arbitrary dust opacity model.

Definition at line 33 of file Graybody.h.

Constructor & Destructor Documentation

◆ Graybody() [1/2]

manticore::Graybody::Graybody ( Dust dust,
double  err = 1e-3 
)
inline

Default constructor.

Parameters
[in]dustDust model.
[in]errRelative error target for integrations.

Definition at line 41 of file Graybody.h.

◆ Graybody() [2/2]

manticore::Graybody::Graybody ( const Graybody g)
inline

Copy constructor.

Definition at line 46 of file Graybody.h.

Member Function Documentation

◆ Bnu()

double manticore::Graybody::Bnu ( double  nu,
double  T 
) const
inline

Blackbody specific intensity (erg/cm^2/s/Hz/sr).

Parameters
[in]nuFrequency (Hz).
[in]TTemperature (K).

Definition at line 58 of file Graybody.h.

References B0, manticore::h_Planck, and manticore::k_Boltzman.

Referenced by dInu_dS(), and Inu().

◆ dBnu_dT()

double manticore::Graybody::dBnu_dT ( double  nu,
double  T 
) const
inline

Blackbody specific intensity T-derivative (erg/cm^2/s/Hz/sr/K).

Parameters
[in]nuFrequency (Hz).
[in]TTemperature (K).

Definition at line 64 of file Graybody.h.

References B0, manticore::h_Planck, and manticore::k_Boltzman.

Referenced by dInu_dT().

◆ dF_dS()

double manticore::Graybody::dF_dS ( double  T,
double  Sigma,
const Detector detect = nullptr,
double  sr = 1.0 
) const
inline

Graybody integrated flux Sigma-derivative (erg/s/g).

Parameters
[in]TTemperature (K).
[in]SigmaMass density (g/cm^2).
[in]detectDetector instance (optional).
[in]srSolid angle (sr, optional).

Definition at line 115 of file Graybody.h.

References dInu_dS(), and Itot().

Referenced by manticore::ccfCheck().

◆ dF_dT()

double manticore::Graybody::dF_dT ( double  T,
double  Sigma,
const Detector detect = nullptr,
double  sr = 1.0 
) const
inline

Graybody integrated flux T-derivative (erg/cm^2/s/K).

Parameters
[in]TTemperature (K).
[in]SigmaMass density (g/cm^2).
[in]detectDetector instance (optional).
[in]srSolid angle (sr, optional).

Definition at line 106 of file Graybody.h.

References dInu_dT(), and Itot().

Referenced by manticore::ccfCheck().

◆ dInu_dS()

double manticore::Graybody::dInu_dS ( double  nu,
double  T,
double  Sigma 
) const
inline

Graybody specific intensity Sigma-derivative (erg/s/Hz/sr/g).

Parameters
[in]nuFrequency (Hz).
[in]TTemperature (K).
[in]SigmaMass density (g/cm^2).

Definition at line 87 of file Graybody.h.

References Bnu(), dust_, and manticore::Dust::kappa().

Referenced by dF_dS().

◆ dInu_dT()

double manticore::Graybody::dInu_dT ( double  nu,
double  T,
double  Sigma 
) const
inline

Graybody specific intensity T-derivative (erg/cm^2/s/Hz/sr/K).

Parameters
[in]nuFrequency (Hz).
[in]TTemperature (K).
[in]SigmaMass density (g/cm^2).

Definition at line 80 of file Graybody.h.

References dBnu_dT(), dust_, and manticore::Dust::kappa().

Referenced by dF_dT().

◆ dust() [1/2]

Dust& manticore::Graybody::dust ( )
inlinenoexcept

Dust model reference.

Definition at line 50 of file Graybody.h.

References dust_.

◆ dust() [2/2]

const Dust& manticore::Graybody::dust ( ) const
inlinenoexcept

Dust model reference (const).

Definition at line 53 of file Graybody.h.

References dust_.

◆ F()

double manticore::Graybody::F ( double  T,
double  Sigma,
const Detector detect = nullptr,
double  sr = 1.0 
) const
inline

Graybody integrated flux (erg/cm^2/s).

Parameters
[in]TTemperature (K).
[in]SigmaMass density (g/cm^2).
[in]detectDetector instance (optional).
[in]srSolid angle (sr, optional).

Definition at line 97 of file Graybody.h.

References Inu(), and Itot().

Referenced by manticore::Detector::ccf(), and manticore::ccfCheck().

◆ Inu()

double manticore::Graybody::Inu ( double  nu,
double  T,
double  Sigma 
) const
inline

Graybody specific intensity (erg/cm^2/s/Hz/sr).

Parameters
[in]nuFrequency (Hz).
[in]TTemperature (K).
[in]SigmaMass density (g/cm^2).

Definition at line 73 of file Graybody.h.

References Bnu(), dust_, and manticore::Dust::kappa().

Referenced by manticore::Detector::ccf(), manticore::ccfCheck(), and F().

◆ Itot()

double manticore::Graybody::Itot ( double(Graybody::*)(double, double, double) const  I,
double  T,
double  Sigma,
const Detector detect = nullptr,
double  sr = 1.0 
) const
protected

Graybody integrated flux variant (erg/cm^2/s/??).

Parameters
[in]TTemperature (K).
[in]SigmaMass density (g/cm^2).
[in]detectDetector instance (optional).
[in]srSolid angle (sr, optional).

Definition at line 45 of file Graybody.cc.

References err_, manticore::graybody::flux(), manticore::Detector::freqRange(), manticore::h_Planck, integ_, intKey, manticore::k_Boltzman, and subLimit.

Referenced by dF_dS(), dF_dT(), and F().

Member Data Documentation

◆ B0

constexpr double manticore::Graybody::B0 = 2.0*h_Planck/(c_light*c_light)
static

Blackbody convenience value.

Definition at line 36 of file Graybody.h.

Referenced by Bnu(), and dBnu_dT().

◆ dust_

Dust& manticore::Graybody::dust_
protected

Dust model.

Definition at line 136 of file Graybody.h.

Referenced by dInu_dS(), dInu_dT(), dust(), and Inu().

◆ err_

double manticore::Graybody::err_
protected

Integration relative error.

Definition at line 139 of file Graybody.h.

Referenced by Itot().

◆ integ_

gsl_integration_workspace* manticore::Graybody::integ_
protected

Integration workspace.

Definition at line 142 of file Graybody.h.

Referenced by Itot().

◆ intKey

constexpr int manticore::Graybody::intKey = GSL_INTEG_GAUSS41
staticprotected

Integration rule key.

Definition at line 124 of file Graybody.h.

Referenced by Itot().

◆ subLimit

constexpr size_t manticore::Graybody::subLimit = 512
staticprotected

Integral subdivision limit.

Definition at line 121 of file Graybody.h.

Referenced by Itot().


The documentation for this class was generated from the following files: