Software Architecture

The ALG's software package consists on a Graphical User Interface (GUI) that allows users to configure the software and atmospheric Radiative Transfer Models (RTMs) in order to generate LUTs of atmospheric transfer functions. Accordingly, the software architecture was structured as shown in the following block diagram:

The software is therefore divided into two main modules:

  • The Graphical User Interface (GUI) module aims to provide the functionalities to interact with the user so that the software, RTMs and atmospheric LUTs can be configured (e.g., integrate RTMs, select LUT input variables). In addition, it contains this help system providing support information to the user through user manuals, installation guides, tutorials and scientific literature.
  • The Atmospheric LUT generation module consists on the software-implemented algorithms needed to (1) generate the RTM input files, (2) run the RTM, and (3) process the RTM output files to create the atmospheric LUT.

In addition to these two modules, the software data files are structured in the following folders:

  • The tools folder (ALGtools) includes a set of Matlab functions that allow users to operate with the generated atmospheric LUTs (read LUT header, multi-dimenstional interpolation and spectral convolution).
  • The binary file folder (bin) contains the software standalone executable file. This folder does not include third-party RTMs.
  • The configuration folder (Conf) contains the software configuration files.
  • The help folder (Help) with the documentation needed to support the user (e.g. user manual, installation guide, tutorial and scientific literature).
  • The LUTs_folder as default folder to store generated LUT files (configuration, LUT data, header…).
  • An additional folder (Others) with miscellanea (e.g. reflectance spectral, logos, icons…).
  • The third_party_sw folder with the provided compiled/source code RTMs (currently, only 6SV v2.1 is provided).
  • A folder (UserData) where user-input files (atmospheric profiles, aerosol properties) are stored.

ALG output files: Atmospheric Look-Up Tables (LUTs)

    The main goal of ALG is to facilitate the use and operation of atmospheric RTMs and to generate Look-Up Tables (LUTs) of atmospheric transfer functions. However, the definition of these atmospheric transfer functions might slightly differ for different atmospheric RTM.

    In the case of MODTRAN, the atmospheric transfer functions consist on:

    • Atmospheric path radiance (L0) in [mW·m-2·sr-1·nm-1].
    • At-surface direct and diffuse solar irradiance (Edir and Edif) in [mW·m-2·nm-1].
    • Target-to-sensor direct and diffuse transmittance (Tdir and Tdif) (unit-less).
    • Spherical albedo (S) (unit-less).

    Accordingly, the user can construct top-of-atmosphere (TOA) radiance (L) for a Lambertian surface of reflectance ρ with the following equation:

    $$L = L_0 + {(E_{dir}\cosθ_{il}+E_{dif})·(T_{dir}+T_{dif})·ρ}/{π(1-Sρ)}$$

    where θil is the solar zenith angle.

    In the case of 6SV, the atmospheric transfer functions consist on:

    • Atmospheric path radiance (L0) in [mW·m-2·sr-1·nm-1].
    • Total gas transmittance (Tgas) (unit-less).
    • Total at-surface irradiance due to scattering (Etot) in [mW·m-2·nm-1].
    • Total upwards transmittance due to scattering (Ttot) (unit-less).
    • Spherical albedo (S) (unit-less).

    As for MODTRAN, the user can construct top-of-atmosphere (TOA) radiance (L) for a Lambertian surface of reflectance ρ with the following equation:

    $$L = L_0 + {T_{gas}·E_{tot}·T_{tot}·ρ}/{π(1-Sρ)}$$

    ALG combines these atmospheric transfer functions in a LUT of dimensions (n·l)×p, where n is the number of atmospheric transfer functions, l is the number of wavelengths and p is the total number of combinations of the input variables. This LUT is stored in a Hierarchical Data Format HDF5 file (.h5) in the dataset named "/LUTdata".

    In addition, the LUT input variables, constant parameters and configuration parameters are stored within the same HDF5 file. It contains the following information:

    • The name of the RTM, and its operation mode, used to generate the LUT data.
    • The input variables distribution method.
    • The name, value and units of the input (or default) static parameters.
    • The name and units of the m input dynamic parameters.
    • The LUT input variables in a matrix of m×p.
    • The name and units of the LUT output atmospheric transfer functions stored in the /LUTdata dataset.
    • The wavelength vector (in [nm]) in which the output atmospheric transfer functions are computed.

    The content of the LUT HDF5 file is further described in the tables below:

    Dimension nameDescription

    n_wvl

    Number of wavelengths at which the output atmospheric transfer functions are calculated.

    n_funcs

    Number of atmospheric transfer functions contained in the LUT (depends on the selected RTM).

    n_ comb

    Number of combinations of input variables at which the output atmospheric transfer functions are calculated.

    n_param

    Dimensionality of the input variable space (i.e., number of variables used as input in the RTM).

    NameDescriptionFormat

    LUT output data

    Stored LUT output data, consisting of atmospheric transfer functions as obtained by the executed RTM.

    name="LUTdata"
    type=DOUBLE
    units=various (see description above)
    dims=[n_funcs*n_wvl n_comb]

    Solar Irradiance

    Extraterrestrial solar irradiance used in the simulation. Notice that I0 is the same for all the nodes in the LUT.

    name="I0"
    type=DOUBLE
    units=mW·m-2·nm-1
    dims=[n_wvl]

    LUT header

    Matrix containing the values of the input variables at each combination in the LUT. Given the different units of the input variables, the attribute "units" consists on a string of comma-separated units (e.g., 'unit1,unit2,...'). An additional attribute "paramtype" defines whether each input variable is continuous or discrete, in a string of comma-separated types (e.g., 'continuous,discrete,discrete...').

    name="LUTheader"
    type=DOUBLE
    units=various (depends on selected input variables)
    dims=[n_param n_comb]

    SZA

    Values of the Solar Zenith Angle for each of node in the LUT.

    name="SZA"
    type=DOUBLE
    units=deg
    dims=[n_comb]

    Wavelengths

    Values values at which the output atmospheric transfer functions are calculated.

    name="wvl"
    type=DOUBLE
    units=nm
    dims=[n_wvl]

    Static parameters

    Values of the fixed/static parameters input in the LUT. Each parameter is stored in a subset with the corresponding variable name varname (e.g., 'static/IHAZE').

    name="static/varname"
    type=DOUBLE
    units=various (depends on the static parameter)
    dims=[1]