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
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 .