Radiation models#
[1]:
%load_ext autoreload
%autoreload 2
[2]:
from majordome.common import standard_plot
from majordome.radiation import WSGGRadlibBordbar2020
from matplotlib import pyplot as plt
import numpy as np
WSGGRadlibBordbar2020#
The basic usage of the model to estimate total emissivity is done as follows:
[3]:
model = WSGGRadlibBordbar2020()
model(L=1, T=1000, P=101325, x_h2o=0.18, x_co2=0.08, fvsoot=0.0)
[3]:
np.float64(0.18368577452587137)
Evaluation of the model against original source of Bordbar (2014) is satisfactory, as follows:
[4]:
@standard_plot(shape=(1, 2))
def plot_bordbar2014(_obj, fig, ax):
""" Reproduce plots of Bordbar (2014), Fig. 2. """
def scan_flue(T, L, *, M):
x_co2 = 1 / (1 + M)
return model(L, T, 101325, M*x_co2, x_co2)
dry_flue = np.vectorize(lambda T, L: scan_flue(T, L, M=1/8))
wet_flue = np.vectorize(lambda T, L: scan_flue(T, L, M=1/1))
L = np.asarray([0.01, 0.1, 0.5, 1.0, 3.0, 5.0, 10.0, 20.0, 60.0])
T = np.arange(400, 2401, 100)
sample = np.meshgrid(T, L)
for n, eps in enumerate(dry_flue(*sample)):
ax[0].plot(T, eps, label=f"{L[n]} atm.m")
for n, eps in enumerate(wet_flue(*sample)):
ax[1].plot(T, eps, label=f"{L[n]} atm.m")
ax[0].set_title("Dry flue M=1/8")
ax[1].set_title("Wet flue M=1")
ax[0].set_xlabel("Temperature [K]")
ax[1].set_xlabel("Temperature [K]")
ax[0].set_ylabel("Total emissivity")
ax[1].set_ylabel("Total emissivity")
ax[0].set_xlim(400, 2400)
ax[1].set_xlim(400, 2400)
ax[0].set_ylim(0, 1)
ax[1].set_ylim(0, 1)
ax[0].set_xticks(np.arange(400, 2401, 400))
ax[1].set_xticks(np.arange(400, 2401, 400))
ax[0].set_yticks(np.arange(0, 1.01, 0.1))
ax[1].set_yticks(np.arange(0, 1.01, 0.1))
ax[0].legend(loc=1, fontsize=9)
ax[1].legend(loc=1, fontsize=9)
[5]:
plot_bordbar2014(None).resize(10, 5)

Absorption coefficients for pure substances only reproduce approximately values reported by Bordbar (2020).
[6]:
model(L=1, T=300, P=101325, x_h2o=0, x_co2=1)
model.absorption_coefs[1:]
[6]:
array([3.388079e-02, 4.544269e-01, 4.680226e+00, 1.038439e+02])
[7]:
model(L=1, T=300, P=101325, x_h2o=1, x_co2=0)
model.absorption_coefs[1:]
[7]:
array([ 0.07703541, 0.8242941 , 6.854761 , 65.93653 ])