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