History

Version 2.0

In this update, we include further refactoring, additional documentation, and new features for device-memory saving algorithms, opart and The nu-stitching , which were not described in the initial submission ( version 1 on the ArXiv manuscript ).

Opart: layer-by-layer opacity and radiative transfer

The opart method has recently demonstrated at least comparable computation times to conventional methods for cases like pure absorption with emission (EmisPure). By calculating without separating opa and art, it eliminates dependency on nlayer for memory requirements. This means that calculations can likely be performed even on GPUs with limited device memory, such as those without the large 80GB memory capacity of an A100 GPU. We consider this a valuable addition for version 2. See here as a tutorial.

Available Opart classes

  • OpartEmisPure

  • OpartReflectPure

  • OpartEmisScat

  • OpartReflectEmis

#542 #546 #547 #558 #565 #559 #556 #557 #568

Wavenumber Stitching ($nu$-stitching)

We implemented the nu-stitching , the method to divide the wavenumber grid, using OLA , in PreMODIT as an option (with nstitch and cutwing arguments).

from exojax.spec import OpaPremodit
opa = OpaPremodit(mdb, nus, nstitch=10, auto_trange=[500,1300], cutwing = 0.015)

See here for the details.

Note that $nu$-stitching can be used even in opart.

#566 #581

Improvements

  • (OpaPremodit, OpaModit) Reduction in device memory usage by performing zero-padding within the scan #577 #578

  • (MdbExomol) Exomol broadener_species option, the capability of air and/or other species #580

Documentation Update

  • visualization of LBD #548 #553

  • GP modeling in getting started #554

  • How to use SVI with ExoJAX #572

  • How to use Nested Sampling with ExoJAX #107 #570

  • others #560 #561

Removed

  • spec.modit.calc_xsection_from_lsd #576

  • spec.modit.xsvector #576

  • spec.modit.xsmatrix #576

Version 1.6

The target for version 1.6 is to introduce features that facilitate the application to more practical data. Also, v 1.6 will be the fixed version of ExoJAX2 prior to the paper II submission. It is planned to be released as a pre-release of ExoJAX (ver 2).

  • practical use of a cloud model. See documents/tutorials/jupiters

  • comprehensive review

  • eq methods (and neq ) in opa and mdb to enable to use == (and !=) operators. #509

  • compatible to radis 0.15.2, in particular, β€œvaex as an option” strategy #500 #506

  • as a result, ExoJAX supports python 3.9 3.10, 3.11, 3.12,

  • new art, ArtAbsPure, computes a pure absorption spectrum w/ and w/o a single reflection at Psurf.

Comparison

  • Comparison with a tabulated cross section #491

  • with pRT #427

Bug Fixes

  • side effect on a multiple call of opa #510

  • Stark broadening #489

  • solar abundance definition (utils.zsol.nsol) #535

Changes

removed

  • recexomol #501

  • lpf.auto_crosssection #498

  • utils.recexomol #501

  • Sij0 attribute from api.py (MdbExomol, MdbHitemp, MdbHitran) #515

  • atm.mixratio.vmr2mmr, atm.mixratio.mmr2vmr (use atm.atmconvert.vmr_to_mmr, atm.atmconvert.mmr_to_vmr instead)

  • spec.dit.dtauM_vald_old

all methods in dynamics package - getE.getE, rvfunc.rvcoref, rvfunc.rvf,``rvfunc.rvf2``, rvfunc.rv_semi_amplitude, rvfunc.rvf1,

several methods in spec.rtransfer (deprecated since v1.5) - dtauM,``dtauCIA``, dtauHminus, dtauVALD, pressure_layer

renamed

  • line_strength_ref_original was introduced for line strength at T=Tref_original, instead of line_strength_ref #515

  • self.line_strength_ref (which depends on self.Tref) β†’ self.line_strength(Tref) #515

  • instances_from_dataframe β†’ attributes_from_dataframe

changes arguments

  • qr_interp(T) β†’ qr_interp(T,Tref) in MdbExomol #515

  • qr_interp(iso,T) β†’ qr_interp(iso,T,Tref) in MdbHitemp/Hitran #515

  • qr_interp_line(T) β†’ qr_interp_line(T,Tref) in MdbHitemp/Hitran #515

new methods

  • computes X, Y, Z, utils.zsol.mass_fraction_XYZ(number_ratio_elements) #535

Version 1.5

  • Intensity-based radiative transfer for pure absorption #411 #412 #419

  • Toon-type two-stream radiative transfer (with scattering/reflection), flux-adding (and LART) #428 #477

  • Forward modeling of the reflection spectrum, with an example of Jupiter’s reflection spectrum. #477

  • Transmission code improvement (Simpson) and more tests #421 #424 #463 #464

  • Rayleigh scattering #115 #430 #434

  • Cloud (Mie) scattering using Ackerman and Marley cloud model #477

Version 1.4

  • transmission spectra #356

  • operators on spectra class #363

  • multiple molecules handler #388

ExoJAX now recommends using 64-bit as default, but can use 32 bit if you are confident (and for real science use).

Version 1.3

  • more GPU memory saved method in PreMODIT (so called diffmode) #332

  • opacity calculator class opa #346 see this tutorial

  • atmospheric RT class art #346

  • optimal Elower max (reducing device memory use) in PreMODIT #331 #332 see this tutorial

  • optional quantum states #336 #338 see this tutorial

  • faster IP and spin convolutions #350

  • molecular mass mdb.molmass available #328

Version 1.2

  • Moved on a common I/O of molecular/atomic database with radis.api for ExoMol/HITRAN/HITEMP #272

  • Removed old moldb for ExoMol/HITRAN/HITEMP

  • PreMODIT algorithm, applicable to a wide wavenumber range #265 #287 #288 #307

  • Memory saved version of spin rotation and instrumental response #295

Version 1.1

  • VALD3

  • reverse mode available

  • compatibility with JAXopt #212

Version 1.0

  • Auto-differentiable Spectrum Model of exoplanets/brown dwarfs built on JAX using the molecular/atomic database, ExoMol, HITRAN/HITEMP and VALD3.

  • Bayesian inference using HMC-NUTS/NumPyro

  • Two opacity calculators available: Direct computation of the Voigt line profile (lpf) and the modified discrete integral transform (MODIT). The latter is a fast opacity calculator for the number of lines N >~ 1000.

  • Transparent open-source code with documentations, including a peer-reviewed paper, API, user guide, and tutorials using real data

  • HITRAN/CIA and H- as continuous opacity

  • Cloud modeling based on Ackerman and Marley

  • Quick computation of the opacity and emission spectra for observers (autospec)

Before Version 1