source: LMDZ6/branches/LMDZ-ECRAD/libf/phylmd/ecrad/README @ 3880

Last change on this file since 3880 was 3880, checked in by idelkadi, 3 years ago

Online implementation of the radiative transfer code ECRAD in LMDZ.

  • Inclusion of the ecrad directory containing the sources of the ECRAD code
  • Adaptation of compilation scripts (CPP_ECRAD keys)
  • Call of ecrad in radlwsw_m.F90 under the logical key iflag_rrtm = 2
File size: 3.2 KB
Line 
1This directory contains the main part of the radiation scheme except
2for the calculation of gas optics.  It is compiled into static library
3../lib/libradiation.a and module files ../mod/radiation_*.mod. The
4coding conventions are described in the CONVENTIONS file.  See the
5file ../driver/radiation_driver.f90 for an example of how the
6radiation scheme is called. The code is arranged as follows.
7
8The configuration information for the radiation scheme is stored in a
9"config" object (type defined in *radiation_config.f90*).  After this
10has been populated depending on how the radiation scheme is to be
11configured, the subroutine "setup_radiation" in
12*radiation_interface.f90* is called.  This sets up the gas, cloud and
13aerosol optics, all of which involve reading data from NetCDF files.
14The cloud and aerosol optics data are described in
15*radiation_aerosol_optics_data.f90* and
16*radiation_cloud_optics_data.f90*.
17
18The main interface to the radiation scheme is via the "radiation"
19subroutine in radiation_interface.f90, which takes six objects as
20input (noting that multiple columns are processed at once):
21
22  single_level - all single-level fields such as skin temperature and
23      surface albedo (type defined in *radiation_single_level.f90*)
24
25  thermodynamics - pressure and temperature (type defined in
26      *radiation_thermodynamics.f90*)
27
28  gas - mixing ratios of gases (type defined in *radiation_gas.f90*)
29
30  cloud - cloud fraction, water content and other information (type
31      defined in *radiation_cloud.f90*)
32
33  aerosol - mixing ratios of different aerosol species (type defined
34      in *radiation_aerosol.f90*)
35
36The output is stored in the following object:
37
38  flux - upwelling and downwelling shortwave and longwave fluxes (type
39      defined in *radiation_flux.f90*)
40
41The "radiation" subroutine first computes the gas optical properties
42(in the form of 3D arrays of dimension column, height and spectral
43g-point), via a call to the "gas_optics" subroutine in
44*radiation_ifsrrtm.f90*, which provides an interface to the IFS
45implementation of the RRTM-G gas optics model in the ../ifsrrtm
46directory.  For testing, a simple monochromatic gas model is also
47provided in *radiation_monochromatic.f90*.
48
49To these fields are added the contribution from aerosols via a call to
50the "aerosol_optics" subroutine, from *radiation_aerosol_optics.f90*.
51
52Cloud optical properties are computed (in the form of 3D arrays of
53dimension column, height and spectral band), via a call to the
54"cloud_optics" subroutine in *radiation_cloud_optics.f90*.
55
56The optical properties may then be saved to an intermediate NetCDF
57file via a routine in *radiation_save.f90*.
58
59Finally, the optics data are passed to the solver, which computes the
60flux profiles.  Currently McICA nad SPARTACUS solvers are
61available. In the case of SPARTACUS, the longwave and shortwave
62versions are in *radiation_spartacus_lw.f90* and
63*radiation_spartacus_sw.f90*, respectively.  These make use of
64routines in the following files:
65
66  *radiation_two_stream.f90* - compute two-stream coefficients
67
68  *radiation_matrix.f90* - matrix operations needed by SPARTACUS
69
70  *radiation_overlap.f90* - compute cloud overlap matrices.
71
72Physical constants are provided in *radiation_constants.f90*.
Note: See TracBrowser for help on using the repository browser.