Functions for blackbody thermal emission (and its derivatives) calculation

PlanckFunctions.PlanckFunctionsModule

PlanckFunctions module provides a set of functions for evaluating the Planck thermal emission spectrum intensity (spectral radiance) and its derivatives with respect to wavelength and temperature. It also provides function to evaluate the integral over the wavelength radiance and Rosseland-averaged and Planck-averaged of spectral coefficients.

Wavelength units are microns and all temperatures should be in Kelvins.

Main functions are: ibb - spectral intensity (spectral radiance) in [W/m²⋅sr⋅μm]

∇ₜibb - spectral intensity first derivative with respect to temperature

∇²ₜibb - spectral intensity second derivative with respect to temperature

∇ₗibb - spectral intensity first derivative with respect to wavelength

∇²ₗibb - spectral intensity second derivative with respect to wavelength

band_power , ∇ₜband_power , ∇²ₜband_power - total intensity (spectral radiance) in wavelength region together with its derivatives, [W/m²⋅sr]

spectral_ratio , ∇ₜspectral_ratio , ∇²ₜspectral_ratio - spectral intensity ratio for two wavelength (spectral ration pyrometer)

spectral_band_ratio , ∇ₜspectral_band_ratio , ∇²ₜspectral_band_ratio - spectral intensity ratio for two wavelength wavelength bands

planck_averaged - plack - averaged quantity (e.g. total emittance)

rosseland_averaged_attenuation - Rosseland-averaging of spectral attenuation

planck_averaged_attenuation - Planck-averaging of spectral attenuation

weighted_average - general function to evaluate averaged

Main literature sources are:

J.R.Howell,M.P.Menguc,J.R.Howell,M.P.Menguc,K.Daun,R.Siegel. Thermal radiation heat transfer. Seventh edition. 2021

Risch, T.K., User's Manual: Routines for Radiative Heat Transfer and Thermometry. NASA/TM-2016-219103. 2016, Edwards, California: Armstrong flight Research Center

https://physics.nist.gov/

source
PlanckFunctions.C₁Constant
C₁ constant for Planck function multiplier in [W⋅μm⁴/(m²⋅sr)]
source https://physics.nist.gov/
source
PlanckFunctions.C₂Constant
C₂ constant for Planck spectral intensity exponent in [μm⋅K]
source https://physics.nist.gov/
source
PlanckFunctions.C₄Constant
C₄ constant in equation for maximum blackbody intensity [W/(m²⋅μm⋅sr*K⁵)]
source https://physics.nist.gov/
source
ChainRulesCore.fruleMethod
frule((Δself, ΔT), ::typeof(band_power), T; λₗ=0.0, λᵣ=Inf, tol=1e-8)

Forward-mode AD rule for band_power.

source
ChainRulesCore.fruleMethod
frule((Δself, ΔT), ::typeof(band_power), T; λₗ=0.0, λᵣ=Inf, tol=1e-8)

Forward-mode AD rule for band_power.

source
ChainRulesCore.fruleMethod
frule((Δself, Δλ, ΔT), ::typeof(ibb), λ::Number, T::Number)

Custom forward-mode automatic differentiation rule for the Planck function ibb(λ, T)

source
ChainRulesCore.rruleMethod
rrule(::typeof(ibb), λ::Number, T::Number)

Custom reverse-mode automatic differentiation rule (pullback) for ibb(λ, T).

source
ChainRulesCore.rruleMethod
ChainRulesCore.rrule(
                    ::typeof(band_power), 
                    T::TT; λₗ::Number , λᵣ::Number
                ) where { TT<:Number}

Custom reverse-mode automatic differentiation rule (pullback) for band_power(T; λₗ = λₗ , λᵣ = λᵣ).

source
PlanckFunctions.DₗibbMethod
Dₗibb(λ,T)

Returns a three-element tuple of (1.bb intensity,2.its first and 3.second derivative with respect to the wavelentgh)

Arguments:

λ - wavelength, μm T - temperature, K

source
PlanckFunctions.Dₜibb!Method
    Dₜibb!(input_tuple, λ::AbstractVector,T)

In-place filling the tuple of (bb intensity, its first ,and second ) derivatives with respect to temperature

Arguments:

input_tuple, {Nx0 vector or nothing , Nx0 vector or nothing, Nx0 vector or nothing} λ - wavelength, μm, [Nx0] T - temperature, K Out: input_tuple filled with ibb , dIbb/dT , d²Ibb/dT²

This version is slightly faster than calling each derivative separately

source
PlanckFunctions.DₜibbMethod
Dₜibb( λ::Number, T::Number , skip_second_derivative::Val{true})

Skips the second derivative evaluation $Dₜibb( λ, T , Val(true))$

source
PlanckFunctions.DₜibbMethod
Dₜibb(λ::AbstractVector,T::AbstractVector)

Calculates tuple of (Ibb,dIbb/dT,d²Ibb/dT²) calculated according to:

d²Ibb/dT² = C₁*(eᵃ¹/(eᵃ¹-1)²)*(C₂/(λ⁶*T³))*[(C₂/(λ*T))*(2*eᵃ¹/(eᵃ¹-1)-1)-2], d²Ibb/dT² = C₁*(eᵃ¹/(eᵃ¹-1)²)*(a₁/(λ⁵*T²))*[a₁*(2*eᵃ¹/(eᵃ¹-1) -1)-2], a₁=C₂/(λ*T), a₂ = 1/(eᵃ¹-1) , a₃ = eᵃ¹/(eᵃ¹-1) , d²Ibb/dT² = C₁*a₂*a₃*(a₁/(λ⁵*T²))*[a₁*(2*a₃ - 1))-2] as far as Ibb = (λ⁻⁵)* C₁*a₂ and dIbb/dT = C₁*a₃*a₂*a₁*(1/(λ⁵*T)) = a₃*a₁*Ibb/T hense d²Ibb/dT² = C₁*a₂*a₃*a₁*(1/(λ⁵*T²))*[a₁*(2*a₃ - 1))-2] = [a₃*a₁*Ibb/T^2]*[a₁*(2*a₃ - 1))-2] = [(dIbb/dT)/T]*[a₁*(2*a₃ - 1))-2]

Arguments:

λ - wavelength region, μm T - temperature, Kelvins

Returns:

(Ibb , dIbb/dT , d²Ibb/dT²)

source
PlanckFunctions.Dₜspectral_band_ratioMethod
Dₜspectral_band_ratio(λ1::NTuple{2, TL}, λ2::NTuple{2,TL}, T::Number , skip_second_derivative::Val{true};  e_slope::Number=1.0 , tol = 1e-6) where TL <: Number

Ignores the second derivative evaluation

source
PlanckFunctions.Dₜspectral_band_ratioMethod
Dₜspectral_band_ratio(λ1::NTuple{2, TL}, λ2::NTuple{2,TL}, T::Number;  e_slope::Number=1.0 , tol = 1e-6) where TL <: Number

All spectral band ratio derivatives are in one tuple

Arguments

λ1- tuple of left and right wavelength of the first band, in μm. λ2- tuple of left and right wavelength of the second band, in μm. T- Absolute temperature, in K. e_slope- Spectral emissivity at λ1 to λ2 ratio (default: 1.0)

source
PlanckFunctions.Dₜspectral_ratioMethod
Dₜspectral_ratio(λ1::Number, λ2::Number, T::Number; e_slope::Number=1.0)

All spectral ratio derivatives in one tuple

Arguments

λ1- First wavelength (usually the shorter one), in μm. λ2- Second wavelength (usually the longer one), in μm. T- Absolute temperature, in K. e_slope- Spectral emissivity at λ1 to λ2 ratio (default: 1.0).

source
PlanckFunctions.attenuated_band_powerMethod
    attenuated_band_power(T, τ::AbstractVector, λ::AbstractVector;  tol=1e-6)

Evaluates the integrated band power of BB with temperature T reaching the detector, accounting for the spectral transmittance profile τ(λ).

Arguments:

T - temeperature , K τ - transmittance λ - wavelength , μm

source
PlanckFunctions.a₁₂₃!Method
a₁₂₃!(amat::AbstractMatrix,λ::AbstractVector,T::Number)

In-place filling of the intermediate matrix a₁=C₂/(λ*T) - amat first column a₂ = 1/(eᵃ¹-1) - amat second column a₃ = eᵃ¹/(eᵃ¹-1) - amat third column

Arguments:

amat - matrix of intermediate coefficients size [Nx3], λ - wavelength , μm, [Nx0], T - temperature, K,

source
PlanckFunctions.a₁₂₃Method
a₁₂₃(λ::Float64,T::Float64)

Arguments:

amat - matrix of intermediate coefficients size [Nx3] λ - wavelength , μm, [Nx0] T - temperature, K

Returns tuple:

(a1 = C₂/(λ*T), a2 = 1/expm1(a1), a3 = 1 + a2)

source
PlanckFunctions.band_powerMethod
    band_power(T;λₗ=0.0 , λᵣ=Inf , tol=1e-8)

Total bb with temperature T integral intensity within (in-band radiance), [W/(m²⋅sr)] the spectral range λₗ...λᵣ (by default the range is 0...inf) tol - tolerance of intehration

Arguments:

T - temperature,Kelvins (optional) λₗ - left wavelength boundary, μm λᵣ - right wavelength boundary, μm tol - intergation tolerance

source
PlanckFunctions.bb_maxMethod
bb_max(bb_function , T)

Returns the value of function at a maximum bb_function can be ibb , ∇ₜibb , ∇²ₜibb

source
PlanckFunctions.bright_temperatureMethod
bright_temperature(i, λ; ϵ=1.0)

Evaluates bright temperature for single wavelength pyrometer i - measured intensity , λ - wavelength, μm ϵ - emissivity

source
PlanckFunctions.ibb!Method
    ibb!(i::AbstractVector , λ::AbstractVector , amat::AbstractMatrix)

In-place blackbody intensity with intermediate coefficients provided externally, [W/m2-sr-mkm] Ibb = C₁*(λ⁻⁵)*a₂ , where a₁=C₂/(λ*T) - amat first column a₂ = 1/(eᵃ¹-1) - amat second column

Arguments:

i - BB intensity, [Nx0] λ - wavelength in μm, [Nx0] amat - matrix of intermediate coefficients, [Nx3]

source
PlanckFunctions.ibb!Method
    ibb!(i::AbstractVector , λ::AbstractVector , T::Number)

In-place blackbody intensity, [W/m²⋅sr⋅μm] Ibb = (λ⁻⁵)* C₁/(eᵃ¹-1) , where a₁=C₂/(λT)

Arguments:

i - bb intensity vector, [Nx0] λ - wavelength in μm, [Nx0] T - temperature in Kelvins

source
PlanckFunctions.ibbMethod
ibb(λ::AbstractVector,amat::AbstractMatrix)

Blackbody spectral intensity (spectral radiance) with intermediate matrix provided externally, [W/m²⋅sr⋅μm] Ibb = C₁*(λ⁻⁵)*a₂ , a₁=C₂/(λ*T) - amat first column, a₂ = 1/(eᵃ¹-1) - amat second column

Arguments:

amat - matrix of intermediate coefficients, [Nx3] λ - wavelength in μm, [Nx0]

source
PlanckFunctions.ibbMethod
    ibb(λ::AbstractVector,T::AbstractVector)

Blackbody spectral intensity (spectral radiance), [W/m²⋅sr⋅μm] Ibb = (λ⁻⁵)* C₁/(eᵃ¹-1) , where a₁=C₂/(λ*T)

Arguments:

λ - wavelength in μm, [Nx0] T - temperature in Kelvins [Mx0]

source
PlanckFunctions.ibbMethod
ibb(λ,T)

Blackbody spectral intensity (spectral radiance), [W/m²⋅sr⋅μm] Ibb = (λ⁻⁵)* C₁/(eᵃ¹-1) , a₁=C₂/(λ*T)

Arguments:

λ - wavelength in μm T - temperature in Kelvins

source
PlanckFunctions.planck_averagedMethod
planck_averaged(x::AbstractVector, λ::AbstractVector,T::Number)

Evaluates the Planck-averaged value of x(λ) for temperature T:

xᵣ = ∫x(λ)ibb(λ,T)dλ/∫ibb(λ,T)dλ

E.g. can be used to evaluate the integral from spectral emissivity

source
PlanckFunctions.planck_averaged_attenuationMethod
planck_averaged_attenuation(α::AbstractVector, λ::AbstractVector,T::Number)

Planck-averaged spectral attenuation coefficient (the summation of spectral scattering and absorption coefficients) α(λ) for temperature T:

αᵣ = (∫(1/α(λ))⋅ibb(λ,T)dλ/∫ibb(λ,T)dλ)⁻¹

source
PlanckFunctions.powerMethod
power(T)

Integral (over the wavelength) intensity of BB (radiance) at temperature T

Units: W/(m²⋅sr)

Arguments:

T - temperature, K

source
PlanckFunctions.rosseland_averaged_attenuationMethod
rosseland_averaged_attenuation(α::AbstractVector, λ::AbstractVector,T::Number)

Evaluates the Rosseland-averaged spectral attenuation coefficient (the summation of spectral scattering and absorption coefficients) α(λ) for temperature T:

αᵣ = (∫(1/α(λ))⋅∇ₜibb(λ,T)dλ/∫∇ₜibb(λ,T)dλ)⁻¹

source
PlanckFunctions.spectral_band_ratioMethod
spectral_band_ratio(λ1::NTuple{2, TL}, λ2::NTuple{2,TL}, T::Number;  e_slope::Number=1.0 , tol = 1e-6) where TL <: Number

The same as spectral_ratio, but now the band can be wide (not a single wavelength). This may be useful for two-color pyrometers when their working regions width cannot be ignored

Arguments

λ1- tuple of left and right wavelength of the first band, in μm. λ2- tuple of left and right wavelength of the second band, in μm. T- Absolute temperature, in K. e_slope- Spectral emissivity at λ1 to λ2 ratio (default: 1.0)

source
PlanckFunctions.spectral_ratioMethod
spectral_ratio(λ1::Number, λ2::Number, T::Number; e_slope::Number=1.0)

Calculate the theoretical intensity ratio R = e_slope * ( Ibb1/Ibb2) between two wavelengths λ1 and λ2 at temperature T, accounting for the spectral emissivities e_slope = ε1/ε2.

Arguments

λ1- First wavelength (usually the shorter one), in μm. λ2- Second wavelength (usually the longer one), in μm. T- Absolute temperature, in K. e_slope- Spectral emissivity at λ1 to λ2 ratio (default: 1.0)

source
PlanckFunctions.weighted_averageFunction
weighted_average(α::AbstractVector, 
                    λ::AbstractVector,
                    T::Number, 
                    g::Dfunctions,
                    f::F = identity) where F

Generic function to evaluate the averaged value of some f(x) function of variable x dependent on wavelength λ for temperature T. Uses linear approximation for the discrete variable and square polynomial for the g function

xᵣ = ∫f(x)g(λ,T)dλ/∫g(λ,T)dλ the default value of f is identity, e.g. if f = inv: xᵣ = ∫g(λ,T)/x(λ)dλ/∫g(λ,T)dλ

source
PlanckFunctions.weighted_valueMethod
weighted_value(     α::AbstractVector, 
                    λ::AbstractVector,
                    T , 
                    g::Union{typeof(ibb),typeof(∇ₜibb),typeof(∇²ₜibb)},
                    f::F = identity) where F <: Function

Returns the tuple of (f(α)g(λ,T)dλ , ∫g(λ,T)dλ)

source
PlanckFunctions.λₘMethod
λₘ(T::Number)

The wavelength (in μm) of bb intensity maximum vs temperature T argmax(Planck(T)) - Wien's displacement law

Arguments:

T - temperature in Kelvins

source
PlanckFunctions.λₘMethod
λₘ(::Union{typeof(ibb) , typeof(∇ₜibb) , typeof(∇²ₜibb)} , T::Number)

The wavelength (in μm) of bb intensity , its first or second derivaitve maximum vs temperature T

Arguments:

T - temperature in Kelvins

source
PlanckFunctions.∇²ₗibbMethod
∇²ₗibb(λ,T)

BB intensity second derivative with respect to the wavelength

Arguments:

λ - wavelength, μm T - temperature, K

source
PlanckFunctions.∇²ₜband_powerMethod
∇²ₜband_power(T , band_power_value; λₗ=0.0 , λᵣ=Inf , tol=1e-8)

Band power second derivative with respect to temeprature with band_power value evaluated externally

Arguments:

T - temperature,Kelvins

(optional) λₗ - left wavelength boundary, μm λᵣ - right wavelength boundary, μm tol - intergation tolerance

source
PlanckFunctions.∇²ₜband_powerMethod
∇²ₜband_power(T ; λₗ=0.0 , λᵣ=Inf , tol=1e-8)

Band power second derivative with respect to temeprature

Arguments:

T - temperature,Kelvins

(optional) λₗ - left wavelength boundary, μm λᵣ - right wavelength boundary, μm tol - intergation tolerance

source
PlanckFunctions.∇²ₜibb!Method
∇²ₜibb!(h::AbstractMatrix{Float64} , λ::AbstractVector{Float64}, T::AbstractVector{Float64})

In-place bb intensity second order derivative with respect to temperature

d²Ibb/dT² = C₁*(eᵃ¹/(eᵃ¹-1)²)*(C₂/(λ⁶*T³))*[(C₂/(λ*T))*(2*eᵃ¹/(eᵃ¹-1)-1)-2],

d²Ibb/dT² = C₁*(eᵃ¹/(eᵃ¹-1)²)*(a₁/(λ⁵*T²))*[a₁*(2*eᵃ¹/(eᵃ¹-1) -1)-2], a₁=C₂/(λ*T), a₂ = 1/(eᵃ¹-1) , a₃ = eᵃ¹/(eᵃ¹-1) ,

d²Ibb/dT² = C₁*a₂*a₃*(a₁/(λ⁵*T²))*[a₁*(2*a₃ - 1))-2]

Arguments :

h - to be filled, [Nx0] λ - wavelength in μm, [Nx0] T- tmperature in Kelvins

source
PlanckFunctions.∇²ₜibb!Method
∇²ₜibb!(h::AbstractVector{Float64}, λ::AbstractVector{Float64} , T::Float64 ,amat::AbstractMatrix{Float64})::Nothing

In-place bb intensity second order derivative with respect to temperature with intermediate matrix provided externally

d²Ibb/dT² = C₁*(eᵃ¹/(eᵃ¹-1)²)*(C₂/(λ⁶*T³))*[(C₂/(λ*T))*(2*eᵃ¹/(eᵃ¹-1)-1)-2],

d²Ibb/dT² = C₁*(eᵃ¹/(eᵃ¹-1)²)*(a₁/(λ⁵*T²))*[a₁*(2*eᵃ¹/(eᵃ¹-1) -1)-2], a₁=C₂/(λ*T), a₂ = 1/(eᵃ¹-1) , a₃ = eᵃ¹/(eᵃ¹-1) ,

d²Ibb/dT² = C₁*a₂*a₃*(a₁/(λ⁵*T²))*[a₁*(2*a₃ - 1))-2]

Arguments :

h - to be filled, [Nx0] λ- wavelength in μm, [Nx0] T - temperature in Kelvins amat - matrix of intermediate coefficients, [Nx3]

source
PlanckFunctions.∇²ₜibb!Method
∇²ₜibb!(h::AbstractVector , λ::AbstractVector , T::Number)

In-place bb intensity second order derivative with respect to temperature

Arguments :

h - to be filled, [Nx0] λ - wavelength in μm, [Nx0] T - tmperature in Kelvins

source
PlanckFunctions.∇²ₜibb!Method
∇²ₜibb!(h::AbstractVector{Float64},T::Float64,amat::AbstractMatrix{Float64},∇i::AbstractVector{Float64})::Nothing

In-place bb intensity second order derivative with respect to temperature with provided both the intermediate matrix amat and the the Planck function first derivative

d²Ibb/dT² = C₁*(eᵃ¹/(eᵃ¹-1)²)*(C₂/(λ⁶*T³))*[(C₂/(λ*T))*(2*eᵃ¹/(eᵃ¹-1)-1)-2]

d²Ibb/dT² = C₁*(eᵃ¹/(eᵃ¹-1)²)*(a₁/(λ⁵*T²))*[a₁*(2*eᵃ¹/(eᵃ¹-1) -1)-2] a₁=C₂/(λ*T) a₂ = 1/(eᵃ¹-1) , a₃ = eᵃ¹/(eᵃ¹-1) , d²Ibb/dT² = C₁*a₂*a₃*(a₁/(λ⁵*T²))*[a₁*(2*a₃ - 1))-2] as far as Ibb = (λ⁻⁵)* C₁*a₂ and dIbb/dT = C₁*a₃*a₂*a₁*(1/(λ⁵*T)) = a₃*a₁*Ibb/T hense

d²Ibb/dT² = C₁*a₂*a₃*a₁*(1/(λ⁵*T²))*[a₁*(2*a₃ - 1))-2] = [a₃*a₁*Ibb/T^2]*[a₁*(2*a₃ - 1))-2] = [(dIbb/dT)/T]*[a₁*(2*a₃ - 1))-2]

Arguments :

h - to be filled, [Nx0] λ - wavelength in μm, [Nx0] amat - matrix of intermediate coefficients, [Nx3] ∇i - vector of bb intensity first derivatives, [Nx0]

source
PlanckFunctions.∇²ₜibbMethod
∇²ₜibb(λ,T)

BB intensity second derivative with respect to temperature

d²Ibb/dT² = C₁*(eᵃ¹/(eᵃ¹-1)²)*(C₂/(λ⁶*T³))*[(C₂/(λ*T))*(2*eᵃ¹/(eᵃ¹-1)-1)-2] ,

d²Ibb/dT² = C₁*(eᵃ¹/(eᵃ¹-1)²)*(a₁/(λ⁵*T²))*[a₁*(2*eᵃ¹/(eᵃ¹-1) -1)-2], a₁=C₂/(λ*T), a₂ = 1/(eᵃ¹-1), a₃ = eᵃ¹/(eᵃ¹-1) ,

d²Ibb/dT² = C₁*a₂*a₃*(a₁/(λ⁵*T²))*[a₁*(2*a₃ - 1))-2]

Arguments :

λ - wavelength in μm T - tmperature in Kelvins

source
PlanckFunctions.∇²ₜpowerMethod
∇²ₜpower(T)

Total intensity second derivative of BB (radiance) at temperature T

Units: W/(m²⋅sr⋅K)

Arguments:

T - temperature, K

source
PlanckFunctions.∇²ₜspectral_band_ratioMethod
∇²ₜspectral_band_ratio(λ1::NTuple{2, TL}, λ2::NTuple{2,TL}, T::Number;  e_slope::Number=1.0 , tol = 1e-6) where TL <: Number

Spectral band ratio second derivative

Arguments

λ1- tuple of left and right wavelength of the first band, in μm. λ2- tuple of left and right wavelength of the second band, in μm. T- Absolute temperature, in K. e_slope- Spectral emissivity at λ1 to λ2 ratio (default: 1.0)

source
PlanckFunctions.∇²ₜspectral_ratioMethod
∇²ₜspectral_ratio(λ1::Number, λ2::Number, T::Number; e_slope::Number=1.0)

Spectral ratio second derivative

Arguments

λ1- First wavelength (usually the shorter one), in μm. λ2- Second wavelength (usually the longer one), in μm. T- Absolute temperature, in K. e_slope- Spectral emissivity at λ1 to λ2 ratio (default: 1.0).

source
PlanckFunctions.∇²ₜ∫ibbₗMethod
∇²ₜ∫ibbₗ(T; λₗ=0.0, λᵣ=Inf)

Relative (with respect to the integral power in the whole spectrum) integral intensity derivative (analytic) of bb intensity fraction in the spectral range λₗ...λᵣ (by default the range is 0...inf)

Arguments:

T - temperature,Kelvins (optional) λₗ - left wavelength boundary, μm λᵣ - right wavelength boundary, μm

source
PlanckFunctions.∇ₗibbMethod
∇ₗibb(λ,T)

BB intensity first derivative with respect to the wavelength

Arguments:

λ - wavelength, μm T - temperature, K

source
PlanckFunctions.∇ₜband_powerMethod
∇ₜband_power(T , band_power_value; λₗ=0.0 , λᵣ=Inf)

Evaluates bandpower derivative with respect to temperature with `bandpowervalue` provided externally (this may be usefull if one already has calculated the bandpower itself)

Arguments:

T - temperature,Kelvins band_power_value - band_power calculated elswhere

(optional) λₗ - left wavelength boundary, μm λᵣ - right wavelength boundary, μm tol - intergation tolerance

source
PlanckFunctions.∇ₜband_powerMethod
∇ₜband_power(T;λₗ=0.0,λᵣ=Inf,tol=1e-6)

Total bb with temperature T integral intensity derivative within (in-band radiance), [W/(m²⋅sr⋅K)] the spectral range λₗ...λᵣ (by default the range is 0...inf) tol - tolerance of integration

Arguments:

T - temperature,Kelvins (optional) λₗ - left wavelength boundary, μm λᵣ - right wavelength boundary, μm tol - intergation tolerance

source
PlanckFunctions.∇ₜibb!Method
∇ₜibb!(g::AbstractMatrix , λ::AbstractVector , T::AbstractVector)

In-place BB intensity first derivative with respect to temperature a₁=C₂/(λ*T) a₂ = 1/(eᵃ¹-1) a₃ = eᵃ¹/(eᵃ¹-1) dIbb/dT = C₁*a₃*a₂*a₁*(1/(λ⁵*T))

Arguments:

g - vector to be filled, [Nx0] λ - wavelength in μm, [Nx0] T - temperature in Kelvins

source
PlanckFunctions.∇ₜibb!Method
∇ₜibb!(g::AbstractVector , λ::AbstractVector , T , amat::AbstractMatrix)

In-place bb intensity first derivative with respect to temperature with externally provided amat - matrix with columns a₁,a₂,a₃

dIbb/dT = C₁*(eᵃ¹/(eᵃ¹-1)²)*(C₂/(λ⁶*T²)), a₁=C₂/(λ*T) , a₂ = 1/(eᵃ¹-1) , a₃ = eᵃ¹/(eᵃ¹-1) , dIbb/dT = C₁*a₃*a₂*a₁*(1/(λ⁵*T)),

Arguments:

g - to be filled, [Nx0] λ - wavelength in μm, [Nx0] T - temperature in Kelvins amat - matrix of intermediate coefficients, [Nx3]

source
PlanckFunctions.∇ₜibb!Method
∇ₜibb!(g::AbstractVector , T , amat::AbstractMatrix , bb_intensity::AbstractVector)

In-place bb intensity first derivative with respect to temperature with externally provided both amat - matrix with columns a₁,a₂,a₃ and bb_intensity

dIbb/dT = C₁(eᵃ¹/(eᵃ¹-1)²)(C₂/(λ⁶T²)) a₁=C₂/(λT) a₂ = 1/(eᵃ¹-1) # 1/expm1(a1) a₃ = eᵃ¹/(eᵃ¹-1) # exp(a)/expm1(a) dIbb/dT = C₁a₃a₂a₁(1/(λ⁵T)) as far as Ibb = C₁a₂/λ⁵ dIbb/dT = a₃a₁C₁(a₂/λ⁵)(1/T)=a₃a₁Ibb/T

Arguments:

g - to be filled, [Nx0] λ - wavelength in μm, [Nx0] T - temperature in Kelvins amat - matrix of intermediate coefficients, [Nx3]

source
PlanckFunctions.∇ₜibbMethod
∇ₜibb(λ::AbstractVector,T,amat::AbstractMatrix)

BB intensity first derivative with respect to temperature with externally provided matrix of intermediate coefficients dIbb/dT = C₁*(eᵃ¹/(eᵃ¹-1)²)*(C₂/(λ⁶*T²)) a₁=C₂/(λ*T) a₂ = 1/(eᵃ¹-1) a₃ = eᵃ¹/(eᵃ¹-1) dIbb/dT = C₁*a₃*a₂*a₁*(1/(λ⁵*T))

Arguments:

λ - wavelength in μm, [Nx0] T - temperature in Kelvins amat - matrix of intermediate coefficients, [Nx3]

source
PlanckFunctions.∇ₜibbMethod
        ∇ₜibb(λ,T)

BB intensity first derivative with respect to temperature dIbb/dT = C₁(eᵃ¹/(eᵃ¹-1)²)(C₂/(λ⁶T²)) `a₁=C₂/(λT)a₂ = 1/(eᵃ¹-1)# 1/expm1(a1)a₃ = eᵃ¹/(eᵃ¹-1)` # exp(a)/expm1(a) dIbb/dT = C₁a₃a₂a₁(1/(λ⁵*T))

Arguments:

λ - wavelength, μm T - temperature, K

source
PlanckFunctions.∇ₜpowerMethod
∇ₜpower(T)

Total intensity first derivative of BB (radiance) at temperature T

Units: W/(m²⋅sr⋅K)

Arguments:

T - temperature, K

source
PlanckFunctions.∇ₜspectral_band_ratioMethod
∇ₜspectral_band_ratio(λ1::NTuple{2, TL}, λ2::NTuple{2,TL}, T::Number;  e_slope::Number=1.0 , tol = 1e-6) where TL <: Number

First derivative of two wide spectral band ratio

Arguments

λ1- tuple of left and right wavelength of the first band, in μm. λ2- tuple of left and right wavelength of the second band, in μm. T- Absolute temperature, in K. e_slope- Spectral emissivity at λ1 to λ2 ratio (default: 1.0)

source
PlanckFunctions.∇ₜspectral_ratioMethod
∇ₜspectral_ratio(λ1::Number, λ2::Number, T::Number; e_slope::Number=1.0)

Calculate the theoretical intensity ratio derivative dR/T =d/dT ( e_slope * ( Ibb1/Ibb2)) between two wavelengths λ1 and λ2 at temperature T, accounting for the spectral emissivities e_slope = ε1/ε2.

Arguments

λ1- First wavelength (usually the shorter one), in μm. λ2- Second wavelength (usually the longer one), in μm. T- Absolute temperature, in K. e_slope- Spectral emissivity at λ1 to λ2 ratio (default: 1.0).

source
PlanckFunctions.∇ₜ∫ibbₗMethod
    ∇ₜ∫ibbₗ(T; λₗ=0.0, λᵣ=Inf)

Relative (with respect to the integral power in the whole spectrum) integral intensity derivative (analytic) of bb intensity fraction in the spectral range λₗ...λᵣ (by default the range is 0...inf)

Arguments:

T - temperature,Kelvins (optional) λₗ - left wavelength boundary, μm λᵣ - right wavelength boundary, μm

source
PlanckFunctions.∫ibbₗMethod
∫ibbₗ(T;λₗ=0.0,λᵣ=Inf,tol=1e-6)

Relative (with respect to the integral power in the whole spectrum) integral intensity of bb in the spectral range λₗ...λᵣ (by default the range is 0...inf)

Arguments:

`T - temperature,Kelvins

(optional)

λₗ - left wavelength boundary, μm λᵣ - right wavelength boundary, μm tol - intergation tolerance

source
PlanckFunctions.∫ₗMethod
∫ₗ(f::F , λ₁::Number, λ₂::Number) where F <: Union{typeof(ibb), typeof(∇²ₜibb), typeof(∇ₜibb)}

Returns a callable object which returns the f function integral as a function of temperature

f = ∫ₗ(ibb , 2.3 , 4.5)
f(1273.5) # returns the value of Planck function integrated over 2.3 - 4.5 spectral range at temperature 1273,5 K
source