This directory contains the main part of the radiation scheme except for the calculation of gas optics. It is compiled into static library ../lib/libradiation.a and module files ../mod/radiation_*.mod. The coding conventions are described in the CONVENTIONS file. See the file ../driver/radiation_driver.f90 for an example of how the radiation scheme is called. The code is arranged as follows. The configuration information for the radiation scheme is stored in a "config" object (type defined in *radiation_config.f90*). After this has been populated depending on how the radiation scheme is to be configured, the subroutine "setup_radiation" in *radiation_interface.f90* is called. This sets up the gas, cloud and aerosol optics, all of which involve reading data from NetCDF files. The cloud and aerosol optics data are described in *radiation_aerosol_optics_data.f90* and *radiation_cloud_optics_data.f90*. The main interface to the radiation scheme is via the "radiation" subroutine in radiation_interface.f90, which takes six objects as input (noting that multiple columns are processed at once): single_level - all single-level fields such as skin temperature and surface albedo (type defined in *radiation_single_level.f90*) thermodynamics - pressure and temperature (type defined in *radiation_thermodynamics.f90*) gas - mixing ratios of gases (type defined in *radiation_gas.f90*) cloud - cloud fraction, water content and other information (type defined in *radiation_cloud.f90*) aerosol - mixing ratios of different aerosol species (type defined in *radiation_aerosol.f90*) The output is stored in the following object: flux - upwelling and downwelling shortwave and longwave fluxes (type defined in *radiation_flux.f90*) The "radiation" subroutine first computes the gas optical properties (in the form of 3D arrays of dimension column, height and spectral g-point), via a call to the "gas_optics" subroutine in *radiation_ifsrrtm.f90*, which provides an interface to the IFS implementation of the RRTM-G gas optics model in the ../ifsrrtm directory. For testing, a simple monochromatic gas model is also provided in *radiation_monochromatic.f90*. To these fields are added the contribution from aerosols via a call to the "aerosol_optics" subroutine, from *radiation_aerosol_optics.f90*. Cloud optical properties are computed (in the form of 3D arrays of dimension column, height and spectral band), via a call to the "cloud_optics" subroutine in *radiation_cloud_optics.f90*. The optical properties may then be saved to an intermediate NetCDF file via a routine in *radiation_save.f90*. Finally, the optics data are passed to the solver, which computes the flux profiles. Currently McICA nad SPARTACUS solvers are available. In the case of SPARTACUS, the longwave and shortwave versions are in *radiation_spartacus_lw.f90* and *radiation_spartacus_sw.f90*, respectively. These make use of routines in the following files: *radiation_two_stream.f90* - compute two-stream coefficients *radiation_matrix.f90* - matrix operations needed by SPARTACUS *radiation_overlap.f90* - compute cloud overlap matrices. Physical constants are provided in *radiation_constants.f90*.