HajimeKawahara/exojax

View on GitHub
documents/tutorials/multimol.rst

Summary

Maintainability
Test Coverage
Multi Molecule Handler
========================

``ExoJAX`` provides building blocks so that calculations can be performed on multiple molecules and in segmented wavelength ranges.
However, we have begun to offer pilot versions of handlers to facilitate handling of multiple molecules and wavelength splitting.


``Multimol`` class handles ``mdb`` and ``opa`` for multiple molecules and wavelength segments, by providing methods called ``multimdb`` and ``multiopa``.

.. code:: ipython3

    from exojax.spec.multimol import MultiMol
    
    mul = MultiMol(molmulti=[["H2O","CH4"],["H2O","CH4"]], 
               dbmulti=[["ExoMol","HITEMP"],["ExoMol","HITEMP"]])

    multimdb = mul.multimdb(nu_grid_list, crit=1.e-30, Ttyp=1000.)    
    multiopa = mul.multiopa_premodit(multimdb, nu_grid_list, auto_trange=[500.,1500.], dit_grid_resolution=0.2)

where ``nu_grid_list`` is a list of the wavenumber grid.

The cross section can be computed using ``multiopa[order][molecule].xsmatrix`` as below.

.. code:: ipython3

    for k in range(len(wavelength_grid_segments)):
        for i in range(len(mul.masked_molmulti[k])):
            xsm = multiopa[k][i].xsmatrix(Tarr, Parr)

We continue to develop this user-friendly multi molecule/segements handler until the release 2.0. Any feedback is welcome!