Intensity-based Emission with pure absorption

Uses ArtPureEmis class

To perform an ibase (intensity-based) calculation using ArtEmisPure in ExoJAX, one simply needs to change the rtsolver option to either “ibased” or “ibased_linsap”.

The difference between ibased and ibased_linsap (ibased w/ linear source approximation) in ExoJAX lies in the assumptions regarding the distribution of the source function within the layer. The former assumes a uniform source function, while the latter assumes a linearly approximated source function. The latter can also be described as a linear version of Olson and Kunasz’s method.

In the case of ibased, the number of streams can be specified. This is done using the nstream option (which needs to be an even number).

from exojax.spec.atmrt import ArtEmisPure

art = ArtEmisPure(pressure_top=1.e-8,
                  pressure_btm=1.e2,
                  nlayer=100,
                  nu_grid=nu_grid,
                  rtsolver="ibased", # "ibased" or "ibased_linsap"
                  nstream=8)         # specify the number of the streams

art.change_temperature_range(400.0, 1500.0) #sets temperature range
Tarr = art.powerlaw_temperature(1300.0, 0.1) # sets a powerlaw T-P profile
mmr_arr = art.constant_mmr_profile(0.1) # sets a constant mass mixing ratio
gravity = art.constant_gravity_profile(2478.57) #sets a constant gravity

# we here call OpaPremodit as opa just to compute xsmatrix
opa = OpaPremodit(mdb=mdb,
                  nu_grid=nu_grid,
                  diffmode=diffmode,
                  auto_trange=[art.Tlow, art.Thigh])
xsmatrix = opa.xsmatrix(Tarr, art.pressure)

dtau = art.opacity_profile_xs(xsmatrix, mmr_arr, opa.mdb.molmass, gravity) # computes optical depth profile
F0 = art.run(dtau, Tarr) # computes spectrum