Manticore  Version 2.0alpha
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
 Single-temperature graybody integrated flux Sigma-derivative (erg/s/g). More...
 
double dF_dSc (double Tc, double Sigmac, double Th=0.0, double Sigmah=0.0, const Detector *detect=nullptr, double sr=1.0) const
 Two-temperature graybody integrated flux Sigmac-derivative (erg/s/g). More...
 
double dF_dSh (double Tc, double Sigmac, double Th=0.0, double Sigmah=0.0, const Detector *detect=nullptr, double sr=1.0) const
 Two-temperature graybody integrated flux Sigmah-derivative (erg/s/g). More...
 
double dF_dT (double T, double Sigma, const Detector *detect=nullptr, double sr=1.0) const
 Single-temperature graybody integrated flux T-derivative (erg/cm^2/s/K). More...
 
double dF_dTc (double Tc, double Sigmac, double Th=0.0, double Sigmah=0.0, const Detector *detect=nullptr, double sr=1.0) const
 Two-temperature graybody integrated flux Tc-derivative (erg/cm^2/s/K). More...
 
double dF_dTh (double Tc, double Sigmac, double Th=0.0, double Sigmah=0.0, const Detector *detect=nullptr, double sr=1.0) const
 Two-temperature graybody integrated flux Th-derivative (erg/cm^2/s/K). More...
 
double dInu_dS (double nu, double T, double Sigma) const
 Single-temperature graybody specific intensity Sigma-derivative (erg/s/Hz/sr/g). More...
 
double dInu_dSc (double nu, double Tc, double Sigmac, double Th=0.0, double Sigmah=0.0) const
 Two-temperature graybody specific intensity Sigmac-derivative (erg/s/Hz/sr/g). More...
 
double dInu_dSh (double nu, double Tc, double Sigmac, double Th=0.0, double Sigmah=0.0) const
 Two-temperature graybody specific intensity Sigmah-derivative (erg/s/Hz/sr/g). More...
 
double dInu_dT (double nu, double T, double Sigma) const
 Single-temperature graybody specific intensity T-derivative (erg/cm^2/s/Hz/sr/K). More...
 
double dInu_dTc (double nu, double Tc, double Sigmac, double Th=0.0, double Sigmah=0.0) const
 Two-temperature graybody specific intensity Tc-derivative (erg/cm^2/s/Hz/sr/K). More...
 
double dInu_dTh (double nu, double Tc, double Sigmac, double Th=0.0, double Sigmah=0.0) const
 Two-temperature graybody specific intensity Th-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
 Single-temperature graybody integrated flux (erg/cm^2/s). More...
 
double F (double Tc, double Sigmac, double Th=0.0, double Sigmah=0.0, const Detector *detect=nullptr, double sr=1.0) const
 Two-temperature graybody integrated flux (erg/cm^2/s). More...
 
double Inu (double nu, double T, double Sigma) const
 Simgle-temperature graybody specific intensity (erg/cm^2/s/Hz/sr). More...
 
double Inu (double nu, double Tc, double Sigmac, double Th, double Sigmah) const
 Two-temperature 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
 Single-temperature graybody integrated flux variant (erg/cm^2/s/??). More...
 
double Itot2 (double(Graybody::*I)(double, double, double, double, double) const, double Tc, double Sigmac, double Th=0.0, double Sigmah=0.0, const Detector *detect=nullptr, double sr=1.0) const
 Two-temperature 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.

Both single- and dual-temperature emission models are supported. Single-temperature models contain a simple uniform slab of material. Dual-temperature models consist of a slab of "cold" (or "core") material sandwiched between two identical layers of "hot" (or "halo") material.

Definition at line 38 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 46 of file Graybody.h.

◆ Graybody() [2/2]

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

Copy constructor.

Definition at line 51 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 63 of file Graybody.h.

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

Referenced by dInu_dS(), dInu_dSc(), dInu_dSh(), 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 69 of file Graybody.h.

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

Referenced by dInu_dT(), dInu_dTc(), and dInu_dTh().

◆ dF_dS()

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

Single-temperature 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 194 of file Graybody.h.

References dInu_dS(), and Itot().

Referenced by manticore::ccfCheck().

◆ dF_dSc()

double manticore::Graybody::dF_dSc ( double  Tc,
double  Sigmac,
double  Th = 0.0,
double  Sigmah = 0.0,
const Detector detect = nullptr,
double  sr = 1.0 
) const
inline

Two-temperature graybody integrated flux Sigmac-derivative (erg/s/g).

Parameters
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).
[in]detectDetector instance (optional).
[in]srSolid angle (sr, optional).

Definition at line 227 of file Graybody.h.

References dInu_dSc(), and Itot2().

◆ dF_dSh()

double manticore::Graybody::dF_dSh ( double  Tc,
double  Sigmac,
double  Th = 0.0,
double  Sigmah = 0.0,
const Detector detect = nullptr,
double  sr = 1.0 
) const
inline

Two-temperature graybody integrated flux Sigmah-derivative (erg/s/g).

Parameters
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).
[in]detectDetector instance (optional).
[in]srSolid angle (sr, optional).

Definition at line 249 of file Graybody.h.

References dInu_dSh(), and Itot2().

◆ dF_dT()

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

Single-temperature 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 185 of file Graybody.h.

References dInu_dT(), and Itot().

Referenced by manticore::ccfCheck().

◆ dF_dTc()

double manticore::Graybody::dF_dTc ( double  Tc,
double  Sigmac,
double  Th = 0.0,
double  Sigmah = 0.0,
const Detector detect = nullptr,
double  sr = 1.0 
) const
inline

Two-temperature graybody integrated flux Tc-derivative (erg/cm^2/s/K).

Parameters
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).
[in]detectDetector instance (optional).
[in]srSolid angle (sr, optional).

Definition at line 216 of file Graybody.h.

References dInu_dTc(), and Itot2().

◆ dF_dTh()

double manticore::Graybody::dF_dTh ( double  Tc,
double  Sigmac,
double  Th = 0.0,
double  Sigmah = 0.0,
const Detector detect = nullptr,
double  sr = 1.0 
) const
inline

Two-temperature graybody integrated flux Th-derivative (erg/cm^2/s/K).

Parameters
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).
[in]detectDetector instance (optional).
[in]srSolid angle (sr, optional).

Definition at line 238 of file Graybody.h.

References dInu_dTh(), and Itot2().

◆ dInu_dS()

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

Single-temperature 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 94 of file Graybody.h.

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

Referenced by dF_dS().

◆ dInu_dSc()

double manticore::Graybody::dInu_dSc ( double  nu,
double  Tc,
double  Sigmac,
double  Th = 0.0,
double  Sigmah = 0.0 
) const
inline

Two-temperature graybody specific intensity Sigmac-derivative (erg/s/Hz/sr/g).

Parameters
[in]nuFrequency (Hz).
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).

Definition at line 135 of file Graybody.h.

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

Referenced by dF_dSc().

◆ dInu_dSh()

double manticore::Graybody::dInu_dSh ( double  nu,
double  Tc,
double  Sigmac,
double  Th = 0.0,
double  Sigmah = 0.0 
) const
inline

Two-temperature graybody specific intensity Sigmah-derivative (erg/s/Hz/sr/g).

Parameters
[in]nuFrequency (Hz).
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).

Definition at line 163 of file Graybody.h.

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

Referenced by dF_dSh().

◆ dInu_dT()

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

Single-temperature 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 86 of file Graybody.h.

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

Referenced by dF_dT().

◆ dInu_dTc()

double manticore::Graybody::dInu_dTc ( double  nu,
double  Tc,
double  Sigmac,
double  Th = 0.0,
double  Sigmah = 0.0 
) const
inline

Two-temperature graybody specific intensity Tc-derivative (erg/cm^2/s/Hz/sr/K).

Parameters
[in]nuFrequency (Hz).
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).

Definition at line 121 of file Graybody.h.

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

Referenced by dF_dTc().

◆ dInu_dTh()

double manticore::Graybody::dInu_dTh ( double  nu,
double  Tc,
double  Sigmac,
double  Th = 0.0,
double  Sigmah = 0.0 
) const
inline

Two-temperature graybody specific intensity Th-derivative (erg/cm^2/s/Hz/sr/K).

Parameters
[in]nuFrequency (Hz).
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).

Definition at line 149 of file Graybody.h.

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

Referenced by dF_dTh().

◆ dust() [1/2]

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

Dust model reference.

Definition at line 55 of file Graybody.h.

References dust_.

◆ dust() [2/2]

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

Dust model reference (const).

Definition at line 58 of file Graybody.h.

References dust_.

◆ F() [1/2]

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

Single-temperature 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 176 of file Graybody.h.

References Inu(), and Itot().

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

◆ F() [2/2]

double manticore::Graybody::F ( double  Tc,
double  Sigmac,
double  Th = 0.0,
double  Sigmah = 0.0,
const Detector detect = nullptr,
double  sr = 1.0 
) const
inline

Two-temperature graybody integrated flux (erg/cm^2/s).

Parameters
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).
[in]detectDetector instance (optional).
[in]srSolid angle (sr, optional).

Definition at line 205 of file Graybody.h.

References Inu(), and Itot2().

◆ Inu() [1/2]

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

Simgle-temperature 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 78 of file Graybody.h.

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

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

◆ Inu() [2/2]

double manticore::Graybody::Inu ( double  nu,
double  Tc,
double  Sigmac,
double  Th,
double  Sigmah 
) const
inline

Two-temperature graybody specific intensity (erg/cm^2/s/Hz/sr).

Parameters
[in]nuFrequency (Hz).
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).

Definition at line 105 of file Graybody.h.

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

◆ 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

Single-temperature 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 55 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().

◆ Itot2()

double manticore::Graybody::Itot2 ( double(Graybody::*)(double, double, double, double, double) const  I,
double  Tc,
double  Sigmac,
double  Th = 0.0,
double  Sigmah = 0.0,
const Detector detect = nullptr,
double  sr = 1.0 
) const
protected

Two-temperature graybody integrated flux variant (erg/cm^2/s/??).

Parameters
[in]TcCold/core temperature (K).
[in]SigmacCold/core mass density (g/cm^2).
[in]ThHot/halo temperature (K).
[in]SigmahHot/halo mass density (g/cm^2).
[in]detectDetector instance (optional).
[in]srSolid angle (sr, optional).

Definition at line 73 of file Graybody.cc.

References err_, manticore::graybody::flux(), manticore::Detector::freqRange(), manticore::h_Planck, manticore::k_Boltzman, and mutils::kgauss_r().

Referenced by dF_dSc(), dF_dSh(), dF_dTc(), dF_dTh(), 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 41 of file Graybody.h.

Referenced by Bnu(), and dBnu_dT().

◆ dust_

Dust& manticore::Graybody::dust_
protected

Dust model.

Definition at line 281 of file Graybody.h.

Referenced by dInu_dS(), dInu_dSc(), dInu_dSh(), dInu_dT(), dInu_dTc(), dInu_dTh(), dust(), and Inu().

◆ err_

double manticore::Graybody::err_
protected

Integration relative error.

Definition at line 284 of file Graybody.h.

Referenced by Itot(), and Itot2().

◆ integ_

gsl_integration_workspace* manticore::Graybody::integ_
protected

Integration workspace.

Definition at line 287 of file Graybody.h.

Referenced by Itot().

◆ intKey

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

Integration rule key.

Definition at line 258 of file Graybody.h.

Referenced by Itot().

◆ subLimit

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

Integral subdivision limit.

Definition at line 255 of file Graybody.h.

Referenced by Itot().


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