CHAPTER 5: A Description of



5.1 Short description of the top-level SCIATRAN subroutines

SCIATRAN solves the radiative transfer equation (RTE) for light scattered and absorbed in a vertically inhomogeneous (plane-parallel) atmosphere (incl. multiple scattering) using the "finite difference method" as described, for example, in [29] and [2].

A description of the mathematical approach used to solve the RTE and to calculate weighting functions in SCIATRAN can be found in [37] [4] [28] [38] [27] [14].

An additional description of the mathematics, data bases, and a user's guide of a predecessor of SCIATRAN can be found in [10].

A detailed description of the finite difference matrix equation actually solved by SCIATRAN, and how this equation can be derived from the general radiative transfer equation, is given in Annex A.

SCIATRAN consists of the main program GT_IFACE which reads all input settings from control.inp and control2.inp, initialises all SCIATRAN input variables using several data bases and performs the call of the main subroutine GPP_MASTER which calls all subsequent SCIATRAN top-level subroutines (see below).

SCIATRAN consists of four nested main do loops:

  1. Altitude grid file loop (GT_IFACE):
    The wavelength range of SCIATRAN (240 - 2400 nm) has been devided into four sub-ranges. For each sub-range a dedicated optimised altitude grid has been created (see gt_net.inp). This is necessary to cope with the strong wavelength dependence of the optical depth mainly due to ozone absorption.
  2. Azimuthal harmonics loop (GPP_MASTER):
    The solution of the radiative transfer equation obtained by SCIATRAN is based on a development of the intensity and the scattering phase functions into a Fourier series. For each Fourier component a (wavelength dependent) matrix equation has to be solved. The solution of this equation yields the radiation scattered into the predefined instrument line-of-sight (LOS) direction (actually the whole radiance field is calculated). The solutions for the different Fourier components have to be summed up (Fourier sum) to obtain the total intensity in the LOS direction.
  3. Wavelength loop (GPP_MASTER):
    Steps through the wavelength grid as specified by the user in file control.dat.
  4. ESFT loop (GPP_MASTER):
    If ESFT (= exponential sum fitting of transmittance function) calculations have to be done for the wavelength of interest for each wavelength the RTE has to be set up and solved M times, where M is the number of ESFT coefficients (usually M=5).

A detailed description of several arrays mentioned in this section can be found in GOMETRAN.VARS.

GT_IFACE

SCIATRAN main program: reads the user specifications given in control.inp, control2.inp, and several additional user interface files and extracts the appropriate information from the SCIATRAN data base (trace gas absorption cross sections, profiles, etc.). GT_IFACE is essentially the interface to the main SCIATRAN subroutine GPP_MASTER. This means that the main task of GT_IFACE is to set up all input parameters for GPP_MASTER and to properly handle all results generated by GPP_MASTER incl. storage of these data in results files. GT_IFACE calls GPP_MASTER within the altitude grid file loop; this means, in general, several times in succession (this is also true for the AMF calculation which is also controlled by GT_IFACE).

GPP_MASTER

GPP_MASTER receives all input parameters from GT_IFACE and returns the major SCIATRAN output parameters, i.e. intensity (array spec) and weighting functions (arrays tragas_weight, aer_weight, albedo_weight, temp_weight, press_weight, and ray_weight). In order to calculate these quantities GPP_MASTER performs the following SCIATRAN top-level subroutine calls:

 GT_CHECK (option)                       
 GPP_ZEROING
 GT_SETUP
 GT_RENORM
 plane-parallel mode  : GT_PPGEOM
 pseudo-spherical mode: GT_SPHERGEOM
     < begin of azimuthal harmonics loop
     GT_ALBEDO_SORT
     GT_LEGEN
     GT_RILGA
     GT_RILGC
     GT_RILGS
         < begin of wavelength loop
         interpolation of DEPOLarisation 
         factor on act. wavelength
         GT_RILGR
         GT_SCATT
         GT_PHASE_LAYERS
         GT_SURFACE
             < begin of ESFT (or correlated-k) loop:
             GT_OPDEP_TRANS
             Scat.mode =2: GPP_SINGL_SCATT
             else        : GPP_FINITE_DIFF
             > end of ESFT (or correlated-k) loop
         > end of wavelength loop
         GPP_CONVERGE
     > end of azimuthal harmonics loop

GT_CHECK

Checks some input variables of GPP_MASTER if input parameter
``do_internal_check'' equals ``true''.

GPP_ZEROING

Zeroing of all arrays in GOMETRAN.VARS and GOMETRANWF.VARS.

GT_SETUP

Calculation of difference arrays for layer heights (DZ, DZR), calculation of Gaussian weights and abszissa (AG, XM, AXM, AG1), calculation of Legendre polynomials PLM PLMM and PLB, and calculation of the factorial matrix CF.

GT_RENORM

Renormalisation of phase function moments for aerosols and clouds (arrays AER_PHASMOMS and CLD_PHASMOMS).

GT_PPGEOM

Setup of delta height array DL1, flag DO_SHADOW (false, if whole atmosphere illuminated by direct solar radiation) and variable NSHADOW (number of shadowfree levels; max. value is NLAYERS). In plane-parallel mode DO_SHADOW equals false, and NSHADOW equals NLAYERS.

GT_SPHERGEOM

Setup of delta height arrays DL1 (if sun above horizon) and DL2 (if sun below horizon), flag DO_SHADOW and variable NSHADOW. Calculation of height dependent array of cosine of solar zenith angle SOL_COS and tangent height layer index array NH (height index corresponding to height level just above tangent height) for direct solar beam.

Start of azimuthal harmonics loop:

GT_ALBEDO_SORT

Setup of flags DO_ALBEDO_TERM and DO_ALBEDO_BC.

GT_LEGEN

Calculation of products of associated Legendre polynomials (PM1, PM2, PT1, and PT2).

GT_RILGA

Calculation of aerosol phase function Fourier coefficient arrays APSUM, APMIN, APSO and APMO.

GT_RILGC

Calculation of cloud phase function Fourier coefficient arrays CPSUM, CPMIN, CPSO, CPMO.

GT_RILGS

Interpolation of cloud top bi-directional reflection coefficients BDSRF_SS and BDSRF_MS.

Start of wavelength loop:

Interpolation of Rayleigh scattering depolarisation factor on act. wavelength if wavelength dependent (variable depol).

GT_RILGR

Calculation of Rayleigh phase function moments RAY_PHASMOMS and Fourier coeff. arrays RSU, RMI, RSO and RMO.

GT_SCATT

Calculation of extinction and scattering coefficient arrays (aerosols: EXA (extinction), SCA (scattering); clouds: EXC (ext.), SCC (scat.); molecules: SCR (scat.)).

GT_PHASE_LAYERS

Interpolation of phase function moments on actual wavelength:

Aerosols : APSO -> ASO
: APMO -> AMO
: APSUM -> ASU
: APMIN -> AMI
Clouds : CPSO -> CSO
: CPMO -> CMO
: CPSUM -> CSU
: CPMIN -> CMI

Calculation of total phase function moments for each layer: arrays P01, P02, PSU, PMI.

GT_SURFACE

Setup of surface reflection moment arrays SURF0, SURF1.

Start of ESFT (or correlated-k) loop:

GT_OPDEP_TRANS

Calculation of optical depth and cumulative optical depth arrays DTAU and TAU and transmittance arrays EXM, EX1 and EX2. Calculation of trace gas vertical optical depth (array VOD).

GPP_SINGL_SCATT

Determines intensity and weighting functions for (single) scattering mode 2. Calls GPP_WEIGHT_FNS_SGL for single scattering weighting function calculation.

GPP_FINITE_DIFF

If scattering mode not equal 2: Determines solution of radiative transfer matrix equation and calculates weighting functions by calling GPP_WEIGHT_FNS if scattering mode not equal 3. If scattering mode equals 3 call of GT_SGL_SCATT (single scattering; no matrix inversion required).

End of ESFT loop.

End of wavelength loop.

GPP_CONVERGE

Adds Fourier terms and checks convergence.

End of Fourier loop.


© 2000; Main Author: Michael Buchwitz, responsible: Kai-Uwe Eichmann / Last Change.