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