documents/userguide/rtransfer_ibased_pure.rst
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).
.. code:: ipython
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