#################################### API Reference #################################### The SMRT API documentation describes the structure of the package and modules and provides detailed information on the classes and functions. The following packages are available in SMRT. The :py:mod:`~smrt.inputs` package includes the functions to build the medium and the sensor configuration. The :py:mod:`~smrt.permittivity` package provides formulae to compute the permittivity of raw materials such as ice, water, wet ice. The :py:mod:`~smrt.microstructure_model` package includes all the representations of the snow micro-structure available. It provides information on the required and optional parameters of each microstrcuture_model. :py:mod:`~smrt.interface` provides the formulation for different types of inter-layer interfaces (such as flat, rugged in the future). The :py:mod:`~smrt.substrate` package and :py:mod:`~smrt.atmosphere` packages provide the lower and upper boundary conditions of the radiative transfer. Substrate can represent the soil, ice, or ocean. It is worth noting that these modules describe the half-space semi-infinite media under and above the snowpack. It means they have uniform properties and especially temperature which is common practice when the focus is on the snowpack. However, for a proper fully coupled multi-layered soil-snow-atmosphere radiative transfer model, it would be necessary to describe the soil and the atmosphere as layers (exactly as the snowpack is made of snow layers) and to implement :py:mod:`~smrt.emmodel` adequately to the soil and atmosphere. The :py:mod:`~smrt.emmodel` package includes all the scattering theories available in SMRT (iba, dmrt, sce, independent spheres (Rayleigh), ...). In some case there is an inter-dependence between the choices of microstructure and of electromagnetic theory. For instance, :py:mod:`~smrt.emmodel.dmrt_qca_shortrange` only works with :py:mod:`~smrt.microstructure_model.sticky_hard_spheres` microstructure (this is inherent to theory) and :py:mod:`~smrt.emmodel.rayleigh` would work with any microstructure model based on spheres (ie. that defines a `radius` parameter) but not with others. The :py:mod:`~smrt.rtsolver` package includes the numerical codes that solves the radiative transfer equation. DORT is currently the main solver for backscatter and brightness temperature calculations. There is also codes for nadir altimetry. The :py:mod:`~smrt.core` package is where the SMRT machinery is implemented and especially the most important objects :py:class:`~smrt.core.sensor.Sensor`, :py:class:`~smrt.core.layer.Layer`, :py:class:`~smrt.core.snowpack.Snowpack`, :py:class:`~smrt.core.model.Model`, etc. It is not necessary to understand how this work to use SMRT, as most of them are created by helper functions which are much more convenient to use than class constructors. The only exception, which is worth exploring a bit, is :py:class:`~smrt.core.result.Result`. It provides useful methods to extract the result of the radiative calculation. In general, it is not recommended to modify/extend :py:mod:`~smrt.core` for normal needs. This package does contain any science. The :py:mod:`~smrt.utils` package provides various useful tools to work with SMRT, but they are not strictly necessary. This package includes wrappers to some off-the-shelf models such as DMRT-QMS, HUT and MEMLS. The documentation can be browsed using the following table of contents, the indices :ref:`modindex` and :ref:`genindex` or using the :ref:`search` functionality. .. toctree:: :titlesonly: :maxdepth: 1 Inputs Permittivity Microstructure Model Interface Substrate Atmosphere Electromagnetic Model Radiative Transfer Solver Core Utilities and tools