![]() |
CHAPTER 5: A Description of
5.1 Short description of the top-level SCIATRAN subroutinesSCIATRAN 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:
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
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.
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.
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:
Calculation of total phase function moments for each layer: arrays
P01, P02, PSU, PMI. GT_SURFACE
Setup of surface reflection moment arrays SURF0,
SURF1.
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).
GPP_CONVERGE
Adds Fourier terms and checks convergence.
|