Radiative Transfer¶
Exojax uses a layer-based atmospheric model for radiative transfer (RT). Currently, the only supported RT is the emission model with no scattering.
Atmospheric Layer Model¶
The upward flux of the n-th layer (with pressure of \(P_n\)) is connected to that of the (n-1)-th layer with transmission T and source function S.
\(F_{n} = \mathcal{T}_n F_{n+1} + (1-\mathcal{T}_n) \, \mathcal{S}_n\)
where \(P_{n-1} < P_n\). So, we need to specify a transmission and source function.
Source Function¶
In the case that a black body emission as a source as,
\(\mathcal{S} = \pi B(T)\)
we can use piBarr.
>>> from exojax.spec import planck
>>> sourcef = planck.piBarr(Tarr,nus)
Transmission for Pure Absorption: trans2E3¶
Currently, exojax supports only a transmission for pure absorption. In this case, the transmission is given as
\(\mathcal{T}_n = 2 E_3(\Delta \tau_n ) = ( 1 - \Delta \tau_n) \exp{(- \Delta \tau_n)} + (\Delta \tau_n )^2 E_1(\Delta \tau_n )\)
where \(\Delta \tau_n\) is delta opacity in the n-th layer, \(E_j(x)\) is the exopential integral of the \(j\) -th order. In exojax, \(2 E_3(x)\) is available as
>>> from exojax.spec.rtransfer import trans2E3
>>> trans2E3(1.0)
DeviceArray(0.21938396, dtype=float32)
trans2E3 is auto-differentiable.
>>> from jax import grad
>>> grad(trans2E3)(1.0)
DeviceArray(-0.29698896, dtype=float32)
Here is \(\Delta \tau\) dependence of \(2 E_3(x)\):

trans2E3 is used in rtrun, which gives an emission spectral model with pure absorption. Then, rtrun has two inputs, one is the arrays of \(\Delta \tau_n\) and source funtion.
F0=rtrun(dtau,sourcef)
See “../tutorials/forward_modeling” to know how to use rtrun in a forward modeling. Note that exojax uses a linear algebraic formulation to solve the RT. The detail description is provided in Paper I .