Manticore  Version 1.5.3
Physics of Molecular Clouds
Public Member Functions | Static Public Attributes | Protected Member Functions | 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)
 Single dust model constructor. More...
 
 Graybody (Dust &dusth, Dust &dustc, double err=1e-3)
 Dual dust model constructor. More...
 
 Graybody (const Graybody &g)
 Copy constructor. More...
 
 ~Graybody ()
 Destructor. 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, 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, double Sigmah, const Detector *detect, 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, double Sigmah, const Detector *detect, 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, 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, double Sigmah, const Detector *detect, 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, double Sigmah, const Detector *detect, 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, double Sigmah) 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, double Sigmah) 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, double Sigmah) 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, double Sigmah) const
 Two-temperature graybody specific intensity Th-derivative (erg/cm^2/s/Hz/sr/K). More...
 
double F (double T, double Sigma, const Detector *detect, double sr=1.0) const
 Single-temperature graybody integrated flux (erg/cm^2/s). More...
 
double F (double Tc, double Sigmac, double Th, double Sigmah, const Detector *detect, double sr=1.0) const
 Two-temperature graybody integrated flux (erg/cm^2/s). More...
 
double Inu (double nu, double T, double Sigma) const
 Single-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...
 
static constexpr double Tcmb = 2.73
 CMB temperature (K). More...
 

Protected Member Functions

double Itot (double(Graybody::*I)(double, double, double) const, double T, double Sigma, const Detector *detect, 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, double Sigmah, const Detector *detect, double sr=1.0) const
 Two-temperature graybody integrated flux variant (erg/cm^2/s/??). More...
 

Protected Attributes

gsl_interp_accel * cacc_ = nullptr
 
bool dualDust_
 Whether the two dust models differ;. More...
 
std::pair< Dust &, Dust & > dust_
 Dust models. More...
 
double err_
 Integration relative error. More...
 
gsl_interp_accel * hacc_ = nullptr
 Interpolation index accelerators. 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 40 of file Graybody.h.

Constructor & Destructor Documentation

◆ Graybody() [1/3]

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

Single dust model constructor.

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

Definition at line 51 of file Graybody.h.

◆ Graybody() [2/3]

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

Dual dust model constructor.

Parameters
[in]dusthHot/halo dust model.
[in]dustcCold/core dust model.
[in]errRelative error target for integrations.

Definition at line 59 of file Graybody.h.

◆ Graybody() [3/3]

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

Copy constructor.

Definition at line 64 of file Graybody.h.

References dust_.

◆ ~Graybody()

manticore::Graybody::~Graybody ( )
inline

Destructor.

Definition at line 69 of file Graybody.h.

References cacc_, and hacc_.

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 77 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 83 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,
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.
[in]srSolid angle (sr, optional).

Definition at line 216 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,
double  Sigmah,
const Detector detect,
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.
[in]srSolid angle (sr, optional).

Definition at line 249 of file Graybody.h.

References dInu_dSc(), and Itot2().

◆ dF_dSh()

double manticore::Graybody::dF_dSh ( double  Tc,
double  Sigmac,
double  Th,
double  Sigmah,
const Detector detect,
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.
[in]srSolid angle (sr, optional).

Definition at line 271 of file Graybody.h.

References dInu_dSh(), and Itot2().

◆ dF_dT()

double manticore::Graybody::dF_dT ( double  T,
double  Sigma,
const Detector detect,
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.
[in]srSolid angle (sr, optional).

Definition at line 207 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,
double  Sigmah,
const Detector detect,
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.
[in]srSolid angle (sr, optional).

Definition at line 238 of file Graybody.h.

References dInu_dTc(), and Itot2().

◆ dF_dTh()

double manticore::Graybody::dF_dTh ( double  Tc,
double  Sigmac,
double  Th,
double  Sigmah,
const Detector detect,
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.
[in]srSolid angle (sr, optional).

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

References Bnu(), CMB, dust_, hacc_, and Tcmb.

Referenced by dF_dS().

◆ dInu_dSc()

double manticore::Graybody::dInu_dSc ( double  nu,
double  Tc,
double  Sigmac,
double  Th,
double  Sigmah 
) 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 153 of file Graybody.h.

References Bnu(), cacc_, dualDust_, dust_, and hacc_.

Referenced by dF_dSc().

◆ dInu_dSh()

double manticore::Graybody::dInu_dSh ( double  nu,
double  Tc,
double  Sigmac,
double  Th,
double  Sigmah 
) 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 184 of file Graybody.h.

References Bnu(), cacc_, dualDust_, dust_, and hacc_.

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 102 of file Graybody.h.

References dBnu_dT(), dust_, and hacc_.

Referenced by dF_dT().

◆ dInu_dTc()

double manticore::Graybody::dInu_dTc ( double  nu,
double  Tc,
double  Sigmac,
double  Th,
double  Sigmah 
) 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 138 of file Graybody.h.

References cacc_, dBnu_dT(), dualDust_, dust_, and hacc_.

Referenced by dF_dTc().

◆ dInu_dTh()

double manticore::Graybody::dInu_dTh ( double  nu,
double  Tc,
double  Sigmac,
double  Th,
double  Sigmah 
) 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 168 of file Graybody.h.

References cacc_, dBnu_dT(), dualDust_, dust_, and hacc_.

Referenced by dF_dTh().

◆ F() [1/2]

double manticore::Graybody::F ( double  T,
double  Sigma,
const Detector detect,
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.
[in]srSolid angle (sr, optional).

Definition at line 198 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,
double  Sigmah,
const Detector detect,
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.
[in]srSolid angle (sr, optional).

Definition at line 227 of file Graybody.h.

References Inu(), and Itot2().

◆ Inu() [1/2]

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

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

References Bnu(), CMB, dust_, hacc_, and Tcmb.

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 121 of file Graybody.h.

References Bnu(), cacc_, dualDust_, dust_, and hacc_.

◆ Itot()

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

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

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

Definition at line 62 of file Graybody.cc.

References err_, std::pair::first, manticore::graybody::flux(), manticore::Detector::freqRange(), mutils::kgauss_r(), and std::pair::second.

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,
double  Sigmah,
const Detector detect,
double  sr = 1.0 
) const
protected

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

Parameters
[in]ISpecific flux integration function.
[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.
[in]srSolid angle (sr, optional).

Definition at line 73 of file Graybody.cc.

References err_, std::pair::first, manticore::graybody::flux2(), manticore::Detector::freqRange(), mutils::kgauss_r(), and std::pair::second.

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 43 of file Graybody.h.

Referenced by Bnu(), and dBnu_dT().

◆ cacc_

gsl_interp_accel * manticore::Graybody::cacc_ = nullptr
protected

Definition at line 310 of file Graybody.h.

Referenced by dInu_dSc(), dInu_dSh(), dInu_dTc(), dInu_dTh(), Inu(), and ~Graybody().

◆ dualDust_

bool manticore::Graybody::dualDust_
protected

Whether the two dust models differ;.

Definition at line 302 of file Graybody.h.

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

◆ dust_

std::pair<Dust&, Dust&> manticore::Graybody::dust_
protected

Dust models.

Definition at line 299 of file Graybody.h.

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

◆ err_

double manticore::Graybody::err_
protected

Integration relative error.

Definition at line 305 of file Graybody.h.

Referenced by Itot(), and Itot2().

◆ hacc_

gsl_interp_accel* manticore::Graybody::hacc_ = nullptr
protected

Interpolation index accelerators.

Definition at line 309 of file Graybody.h.

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

◆ Tcmb

constexpr double manticore::Graybody::Tcmb = 2.73
static

CMB temperature (K).

Definition at line 46 of file Graybody.h.

Referenced by dInu_dS(), and Inu().


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