4 #include <gsl/gsl_integration.h> 58 double Bnu(
double nu,
double T)
const 64 double dBnu_dT(
double nu,
double T)
const {
66 return B0*nu*nu*nu*(em1+1.0)*x/(em1*em1*T);
73 double Inu(
double nu,
double T,
double Sigma)
const 80 double dInu_dT(
double nu,
double T,
double Sigma)
const 87 double dInu_dS(
double nu,
double T,
double Sigma)
const {
89 return exp(-kappa*Sigma)*kappa*
Bnu(nu, T);
97 double F(
double T,
double Sigma,
98 const Detector *detect =
nullptr,
double sr = 1.0)
const 106 double dF_dT(
double T,
double Sigma,
107 const Detector *detect =
nullptr,
double sr = 1.0)
const 115 double dF_dS(
double T,
double Sigma,
116 const Detector *detect =
nullptr,
double sr = 1.0)
const 124 static constexpr
int intKey = GSL_INTEG_GAUSS41;
131 double Itot(
double (
Graybody::*I)(
double,
double,
double)
const,
132 double T,
double Sigma,
133 const Detector *detect =
nullptr,
double sr = 1.0)
const;
gsl_integration_workspace * integ_
Integration workspace.
static constexpr int intKey
Integration rule key.
constexpr double h_Planck
Planck's constant (erg*s).
double err_
Integration relative error.
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).
constexpr double k_Boltzman
Planck's constant (erg/K).
static constexpr size_t subLimit
Integral subdivision limit.
Graybody(const Graybody &g)
Copy constructor.
double dInu_dT(double nu, double T, double Sigma) const
Graybody specific intensity T-derivative (erg/cm^2/s/Hz/sr/K).
double dF_dS(double T, double Sigma, const Detector *detect=nullptr, double sr=1.0) const
Graybody integrated flux Sigma-derivative (erg/s/g).
constexpr double c_light
Speed of light (cm/s).
double kappa(double nu) const
Gas/dust extinction opacity (cm^2/g).
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/??).
static constexpr double B0
Blackbody convenience value.
double F(double T, double Sigma, const Detector *detect=nullptr, double sr=1.0) const
Graybody integrated flux (erg/cm^2/s).
double Bnu(double nu, double T) const
Blackbody specific intensity (erg/cm^2/s/Hz/sr).
const Dust & dust() const noexcept
Dust model reference (const).
Dust & dust() noexcept
Dust model reference.
Graybody(Dust &dust, double err=1e-3)
Default constructor.
double dInu_dS(double nu, double T, double Sigma) const
Graybody specific intensity Sigma-derivative (erg/s/Hz/sr/g).
double Inu(double nu, double T, double Sigma) const
Graybody specific intensity (erg/cm^2/s/Hz/sr).
double dBnu_dT(double nu, double T) const
Blackbody specific intensity T-derivative (erg/cm^2/s/Hz/sr/K).