The Dense Media Radiative Transfer - Multi Layers model

Numerical simulation of the microwave emission of the snowpack using a model based on the DMRT theory.


  • Version 1.6: added several examples from the paper in GMD. Correction of bug in with soil handling.
  • Version 1.5: null snow depth works correctly now. Solve a problem with tau in main.f90
  • Version 1.4: solve a minor problem in dmrtml.f90
  • Version 1.3: solve a problem with LWC. The test file dmrtml-medium-amsre.dat is now correct.
  • Version 1.2: solve a problem with units in dmrtml.f90
  • Version 1.1: solve a problem with Tbatmo in disort.f90
  • Version 1.0: first public release!

What is DMRT-ML ?

DMRT-ML is a physical model used to compute the thermal microwave emission of a given snowpack for passive microwave remote sensing applications. The model is based on the Dense Media Radiative Transfer Theory (Tsang, 1992 and Tsang and Kong 2001) and accurately solves the radiative transfer equation using the Discrete Ordinate Method (DISORT, Jin, 1994).

The snowpack is modeled as a stack of horizontal layers of snow and an optional underlying interface representing the soil or the ice. The atmospheric downwelling contribution can be taken into account.

DMRT-ML is designed to work for most snow-covered surfaces, and can model dry or wet snowpacks over soil (e.g. Alpine or Arctic seasonal snow), over ice (e.g. on ice-sheet or lake) and soon over sea-ice.

DMRT-ML has been developed at LGGE (now IGE) and is freely distributed under an open source license. Contributions from the remote sensing and snow community would be appreciated to further evaluate, enhance and document DMRT-ML.

The model is written in Fortran 90 and (optionally) interfaced to Python (version 2.5 and higher). It is thus fast and easy to use. The code is known to compile and run on Linux and Windows and should run smoothly on other systems.

Detailed description and analysis of several simulations are given in the reference paper

Main and contributing authors :

Ghislain Picard1, Ludovic Brucker1*, Alexandre Roy2, Florent Dupont1,2

1Insitut des Geosciences de l'Environnement (IGE)
54 rue Molière - Domaine Universitaire - BP 96
38402 St Martin d'Hères Cedex, FRANCE
2Centre d'applications et de recherches en télédétection (CARTEL)
Université de Sherbrooke
2500 Bd Université
Sherbrooke, Qc J1K 2R1 CANADA
* now at: NASA GSFC, Cryospheric Sciences Lab., code 615 Greenbelt, MD 20771 U.S.A.

Obtaining the code:

The source code and the technical documentation can be downloaded.

The software i spublished under the GNU General Public License version 3 ( In particular, if you modify the code, it must remain open source with the same GPL-3.0 license and it can not be linked with most non-GPL licenses. Also note that this software comes with no warranty.

Installation and compilation:

To install DMRT-ML, download the archive (zip or tar.gz format) in an empty directory and follow the step-by-step instructions. In the archive, the main directory contains the code, and the doc subdirectory contains the code documentation in html format. To read the documentation, point your favourite internet browser to the file: doc/html/index.html or use the online documentation (check the version). Note that the technical documentation was automatically generated using Doxygen from the comments included in DMRT-ML source code. If you would like to contribute to the documentation, please directly modify the code or alternatively send the necessary changes to

Setup in short:

The core of the model is written in standard Fortran 90 and needs to be compiled with a Fortran compiler (gfortran or Intel Fortran are known to work). For fast calculations, the matrix diagonalizations and inversions in the DISORT method use the efficient LAPACK library or one of its optimized flavors (Intel MKL, ...). One of these libraries must be properly installed before attempting the compilation. If you intend to use the Python bindings, you also must install Python and Scipy. Installing Matplotlib is recommended for plotting and using the test scripts provided in the source.

The compilation settings are in the Makefile-ARCH files where ARCH is the name of a compiler. Choose the most suitable for your environment (Makefile-gfortran should be the most portable) and rename or copy it to Makefile. Open this file with a text editor and change the settings accordingly with your installation paths. Type make in a command window to compile the code. If successful, the dmrtml executable is produced in the main directory. For testing, run this executable with dmrtml -i medium.dat -s amsre and check the output is identical to the file dmrtml-medium-amsre.out. This executable is a demonstration code with limited functionality. You should adapt and extend the main.f90 file to perform our own calculations.

It is much easier and elegant to use Python to drive DMRT-ML than to modify the Fortran driver (main.f90). Python is easy to learn and is great for science! To build the Python bindings, type make pydmrt. In case of error, adjust the f2py parameters in the Makefile file (using f2py may be tedious but be brave). Several Python scripts are provided to test the sensitivity of DMRT-ML to various parameters (,, ...). They are run by double clicking the icon or from the command line without argument. Modify one of these scripts for your particular usage.

Step-by-step compilation instructions:

emission diagram at horizontal and vertical polarization

Angular diagram of emission obtained with

DMRT-ML internals:

This section complements the technical documentation generated with Doxygen. Detailed information is also available in the reference DMRT-ML paper. DMRT-ML is composed of several pieces of code:

Recommended citations:

A paper describing DMRT-ML in detail is in preparation. Please ask for the status for citation.

Recommended citation:

(NB: the complete references for the soil models abbreviated WM99 and W83 in Table 1 of the paper are missing, they are given below)

Other papers using DMRT-ML:

Validity and recommendations:

As a model primarily designed for research, DMRT-ML code has very little control of the validity of the input parameters and very limited error reporting. In addition, the version of the DMRT theory implemented here has several limitations that are not well understood. It seems it diverges in some cases (e.g. large particle size, high density, etc). In any case, the model is provided without warranty as explained in the license.

A few tips, known limitations and bugs:

Frequently Asked Questions (FAQ):

Contribution and acknowledgement

We would like to acknowledge Samuel Morin, Chawn Hallow, Nicolas Champollion, Michel Fily, Alain Royer for useful discussions and corrections.

Model development was supported by the French Programme National de Télédétection Spatiale. Logistical support from the French Polar Institute was essential for the collection of validation data in Antarctica.