[4773] | 1 | # ECRAD - ECMWF atmospheric radiation scheme |
---|
| 2 | |
---|
| 3 | This document last updated 9 June 2022 |
---|
| 4 | |
---|
| 5 | Robin Hogan <r.j.hogan@ecmwf.int> |
---|
| 6 | |
---|
| 7 | For more complete information about compilation and usage of ecRad, |
---|
| 8 | please see the documentation on the |
---|
| 9 | [ecRad web site](https://confluence.ecmwf.int/display/ECRAD). |
---|
| 10 | |
---|
| 11 | |
---|
| 12 | ## INTRODUCTION |
---|
| 13 | |
---|
| 14 | This package contains the offline version of a radiation scheme |
---|
| 15 | suitable for use in atmospheric weather and climate models. The code |
---|
| 16 | is designed to be extensible and flexible. For example, the gas |
---|
| 17 | optics, cloud optics and solver are completely separated (see |
---|
| 18 | `radiation/radiation_interface.F90` where they are called in sequence), |
---|
| 19 | thereby facilitating future changes where different gas models or |
---|
| 20 | solvers may be switched in and out independently. The offline code is |
---|
| 21 | parallelized using OpenMP. |
---|
| 22 | |
---|
| 23 | Five solvers are currently available: |
---|
| 24 | |
---|
| 25 | 1. The Monte Carlo Independent Column Approximation (McICA) of Pincus |
---|
| 26 | et al. (2003). This is is a now widely used method for treating cloud |
---|
| 27 | structure efficiently. The implementation in this package is more |
---|
| 28 | efficient than the one currently operational in the ECMWF model, and |
---|
| 29 | produces less noise in partially cloudy situations. Note that since |
---|
| 30 | McICA is stocastic, individual flux profiles using McICA may differ |
---|
| 31 | simply due to random variations in the sampling of the cloud field. |
---|
| 32 | |
---|
| 33 | 2. The Tripleclouds scheme of Shonk and Hogan (2008). This represents |
---|
| 34 | cloud structure by dividing each layer into three regions, one clear |
---|
| 35 | and two cloudy with different optical depth. It is somewhat slower |
---|
| 36 | than McICA but does not generate noise. |
---|
| 37 | |
---|
| 38 | 3. The Speedy Algorithm for Radiative Transfer through Cloud Sides |
---|
| 39 | (SPARTACUS) of Hogan et al. (JGR 2016). This is a method for |
---|
| 40 | efficiently treating 3D radiative effects associated with clouds. It |
---|
| 41 | uses the same differential equations proposed by Hogan and Shonk (JAS |
---|
| 42 | 2013), but solves them using a matrix exponential method that is much |
---|
| 43 | more elegant than their method, and is also here extended to the |
---|
| 44 | longwave (see Schaefer et al., JGR 2016). It also incorporates the |
---|
| 45 | Tripleclouds methodology of Shonk and Hogan (2008) to represent cloud |
---|
| 46 | inhomogeneity. |
---|
| 47 | |
---|
| 48 | 4. A homogeneous (plane parallel) solver in which clouds are assumed |
---|
| 49 | to fill the gridbox horizontally. This is useful for computing |
---|
| 50 | Independent Column Approximation benchmarks. |
---|
| 51 | |
---|
| 52 | 5. A "cloudless" solver if your focus is on clear skies. |
---|
| 53 | |
---|
| 54 | Two gas optics models are available: |
---|
| 55 | |
---|
| 56 | 1. The Rapid Radiative Transfer Model for GCMs (RRTMG), the |
---|
| 57 | implementation being that from the ECMWF Integrated Forecasting System |
---|
| 58 | (IFS). |
---|
| 59 | |
---|
| 60 | 2. The ECMWF Correlated k-Distribution (ecCKD) scheme (since ecRad |
---|
| 61 | 1.5), which uses a flexible discretization of the spectrum that is |
---|
| 62 | read from a file at run-time. |
---|
| 63 | |
---|
| 64 | |
---|
| 65 | ## PACKAGE OVERVIEW |
---|
| 66 | |
---|
| 67 | The subdirectories are as follows: |
---|
| 68 | |
---|
| 69 | - `radiation` - the ecRad souce code |
---|
| 70 | |
---|
| 71 | - `ifsaux` - source code providing a (sometimes dummy) IFS environment |
---|
| 72 | |
---|
| 73 | - `ifsrrtm` - the IFS implementation of the RRTMG gas optics scheme |
---|
| 74 | |
---|
| 75 | - `utilities` - source code for useful utilities, such as reading netCDF |
---|
| 76 | files |
---|
| 77 | |
---|
| 78 | - `drhook` - dummy version of the Dr Hook profiling system |
---|
| 79 | |
---|
| 80 | - `driver` - the source code for the offline driver program |
---|
| 81 | |
---|
| 82 | - `ifs` - slightly modified source files from the IFS that are used to provide inputs to |
---|
| 83 | ecRad, but not used in this offline version except if you compile the ecrad_ifs_driver executable |
---|
| 84 | |
---|
| 85 | - `mod` - where Fortran module files are written |
---|
| 86 | |
---|
| 87 | - `lib` - where the static libraries are written |
---|
| 88 | |
---|
| 89 | - `bin` - where the executable ecrad is written |
---|
| 90 | |
---|
| 91 | - `data` - contains configuration data read at run-time |
---|
| 92 | |
---|
| 93 | - `test` - test cases including Matlab code to plot the outputs |
---|
| 94 | |
---|
| 95 | - `include` - automatically generated interface blocks for non-module routines |
---|
| 96 | |
---|
| 97 | - `practical` - exercises to get started with ecRad |
---|
| 98 | |
---|
| 99 | |
---|
| 100 | ## TO COMPILE |
---|
| 101 | |
---|
| 102 | 1. Ensure you have a reasonably recent Fortran compiler - it needs to |
---|
| 103 | support modules with `contains` and `procedure` statements for |
---|
| 104 | example. Ensure you have the Fortran netCDF library installed |
---|
| 105 | (versions 3 or 4) and that the module file is compatible with your |
---|
| 106 | Fortran compiler. |
---|
| 107 | |
---|
| 108 | 2. You can compile the code using |
---|
| 109 | |
---|
| 110 | make PROFILE=<prof> |
---|
| 111 | |
---|
| 112 | where `<prof>` is one of `gfortran`, `pgi`, `cray` or `intel`. |
---|
| 113 | This will read the system-specific configurations from the file |
---|
| 114 | `Makefile_include.<prof>`. If you omit the `PROFILE=` option then |
---|
| 115 | `gfortran` will be assumed. If you have a compiler other than these |
---|
| 116 | then create such a file for your compiler following the example in |
---|
| 117 | `Makefile_include.gfortran`. Two additional profiles are provided, |
---|
| 118 | `ecmwf` which builds on the `gfortran` profile and `uor` |
---|
| 119 | (University of Reading) which is built on the `pgi` profile. |
---|
| 120 | |
---|
| 121 | If the compile is successful then static libraries should appear in |
---|
| 122 | the `lib` directory, and then the executable `bin/ecrad`. |
---|
| 123 | |
---|
| 124 | 3. To clean-up, type `make clean`. To build an unoptimized version |
---|
| 125 | for debugging, you can do |
---|
| 126 | |
---|
| 127 | make PROFILE=<prof> DEBUG=1 |
---|
| 128 | |
---|
| 129 | or you can specifically override the variables in `Makefile_include.<prof>` |
---|
| 130 | using, for example |
---|
| 131 | |
---|
| 132 | make PROFILE=<prof> OPTFLAGS=-O0 DEBUGFLAGS="-g -pg" |
---|
| 133 | |
---|
| 134 | To compile in single precision add `SINGLE_PRECISION=1` to the |
---|
| 135 | `make` command line. To compile with the Dr Hook profiling system, |
---|
| 136 | first install ECMWF's [fiat library]([ecRad web |
---|
| 137 | site](https://github.com/ecmwf-ifs/fiat), then add |
---|
| 138 | `FIATDIR=/path/to/fiat` to the `make` command line, such that the |
---|
| 139 | files `$FIATDIR/lib/libfiat.so` and |
---|
| 140 | `$FIATDIR/module/fiat/yomhook.mod` can be found at build time. |
---|
| 141 | |
---|
| 142 | |
---|
| 143 | ## TO TEST |
---|
| 144 | |
---|
| 145 | The offline driver is run via |
---|
| 146 | |
---|
| 147 | ecrad <namelist.nam> <input_file.nc> <output_file.nc> |
---|
| 148 | |
---|
| 149 | where the radiation scheme is configured using the Fortran namelist |
---|
| 150 | file `<namelist.nam>`, and the inputs and outputs are in netCDF |
---|
| 151 | format. |
---|
| 152 | |
---|
| 153 | The `practical` directory contains a set of practical exercises to |
---|
| 154 | help new users become familiar with the capabilities of ecRad. Start |
---|
| 155 | by reading the instructions in `practical/ecrad_practical.pdf`. |
---|
| 156 | |
---|
| 157 | The `test/ifs` directory contains a pole-to-pole slice of |
---|
| 158 | low-resolution IFS model data in a form to use as input to the offline |
---|
| 159 | version of ecRad. It includes aerosols extracted from the CAMS |
---|
| 160 | climatology used operationally since IFS Cycle 43R3. Typing `make |
---|
| 161 | test` in this directory runs a number of configurations of ecRad |
---|
| 162 | described in the Makefile. The Matlab script `plot_ifs.m` can be used |
---|
| 163 | to visualize the results. The file |
---|
| 164 | `ecrad_meridian_default_out_REFERENCE.nc` contains a reference version |
---|
| 165 | of the output file `ecrad_meridian_default_out.nc` (case "a"), which |
---|
| 166 | you can compare to be sure your compilation is working as |
---|
| 167 | expected. This case has essentially been superceded by the slice in the |
---|
| 168 | `practical` directory. |
---|
| 169 | |
---|
| 170 | The `test/i3rc` directory contains the 1D profile of the I3RC cumulus |
---|
| 171 | test case used by Hogan et al. (2016). Typing `make test` in this |
---|
| 172 | directory runs the various 1D and 3D configurations of ecRad. The |
---|
| 173 | Matlab script `plot_i3rc.m` can then be used to visualize the results, |
---|
| 174 | reproducing three of the figures from Hogan et al. (2016). Note that |
---|
| 175 | you will need to ensure that a reasonably up-to-date version of the |
---|
| 176 | `nco` tools are available and in your path. This test involves |
---|
| 177 | running the duplicate_profiles.sh script, which duplicates the single |
---|
| 178 | profile in `i3rc_mls_cumulus.nc`, each with a different solar zenith |
---|
| 179 | angle. |
---|
| 180 | |
---|
| 181 | The `test/surface` directory contains tests of the surface tile types, |
---|
| 182 | although this is under development and so nothing here is guaranteed |
---|
| 183 | to work. |
---|
| 184 | |
---|
| 185 | Alternatively, type `make test` in the top-level directory to run all |
---|
| 186 | cases. |
---|
| 187 | |
---|
| 188 | In addition to writing the output file, a file containing the |
---|
| 189 | intermediate radiative properties of the atmosphere for each g-point |
---|
| 190 | can be stored in `radiative_properties.nc` (edit the config namelist to |
---|
| 191 | enable this), but note that the g-points have been reordered in |
---|
| 192 | approximate order of optical depth if the SPARTACUS solver is chosen. |
---|
| 193 | |
---|
| 194 | |
---|
| 195 | ## LICENCE |
---|
| 196 | |
---|
| 197 | (C) Copyright 2014- ECMWF. |
---|
| 198 | |
---|
| 199 | This software is licensed under the terms of the Apache Licence Version 2.0 |
---|
| 200 | which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. |
---|
| 201 | |
---|
| 202 | In applying this licence, ECMWF does not waive the privileges and immunities |
---|
| 203 | granted to it by virtue of its status as an intergovernmental organisation |
---|
| 204 | nor does it submit to any jurisdiction. |
---|
| 205 | Copyright statements are given in the file NOTICE. |
---|
| 206 | |
---|
| 207 | The ifsrrtm directory of this package includes a modified version of |
---|
| 208 | the gas optics part of the Rapid Radiative Transfer Model for GCMS |
---|
| 209 | (RRTMG). RRTMG was developed at Atmospheric & Environmental Research |
---|
| 210 | (AER), Inc., Lexington, Massachusetts and is available under the |
---|
| 211 | "3-clause BSD" license; for details, see ifsrrtm/AER-BSD3-LICENSE. |
---|
| 212 | |
---|
| 213 | |
---|
| 214 | ## PUBLICATIONS |
---|
| 215 | |
---|
| 216 | The ecRad radiation scheme itself is described here: |
---|
| 217 | |
---|
| 218 | - Hogan, R. J., and A. Bozzo, 2018: A flexible and efficient radiation |
---|
| 219 | scheme for the ECMWF model. J. Adv. Modeling Earth Syst., 10, 1990-2008, |
---|
| 220 | doi:10.1029/2018MS001364. |
---|
| 221 | |
---|
| 222 | - Hogan, R. J., and A. Bozzo, 2016: ECRAD: A new radiation scheme for |
---|
| 223 | the IFS. ECMWF Technical Memorandum number 787, 35pp: |
---|
| 224 | http://www.ecmwf.int/en/elibrary/16901-ecrad-new-radiation-scheme-ifs |
---|
| 225 | |
---|
| 226 | A two-part paper is published in Journal of Geophysics Research |
---|
| 227 | describing the SPARTACUS technique: |
---|
| 228 | |
---|
| 229 | - Schäfer, S. A. K., R. J. Hogan, C. Klinger, J.-C. Chiu and B. Mayer, |
---|
| 230 | 2016: Representing 3D cloud-radiation effects in two-stream schemes: 1. Longwave considerations and effective cloud edge length. |
---|
| 231 | J. Geophys. Res., 121, 8567-8582. |
---|
| 232 | http://www.met.reading.ac.uk/~swrhgnrj/publications/spartacus_part1.pdf |
---|
| 233 | |
---|
| 234 | - Hogan, R. J., S. A. K. Schäfer, C. Klinger, J.-C. Chiu and B. Mayer, |
---|
| 235 | 2016: Representing 3D cloud-radiation effects in two-stream schemes: 2. Matrix formulation and broadband evaluation. J. Geophys. Res., 121, |
---|
| 236 | 8583-8599. |
---|
| 237 | http://www.met.reading.ac.uk/~swrhgnrj/publications/spartacus_part2.pdf |
---|
| 238 | |
---|
| 239 | More recent developments on the shortwave SPARTACUS solver, available |
---|
| 240 | since ecRad 1.1.10, are described here: |
---|
| 241 | |
---|
| 242 | - Hogan, R. J., M. D. Fielding, H. W. Barker, N. Villefranque and |
---|
| 243 | S. A. K. Schäfer, 2019: Entrapment: An important mechanism to explain |
---|
| 244 | the shortwave 3D radiative effect of clouds. J. Atmos. Sci., 76, |
---|
| 245 | 2123–2141. |
---|
| 246 | |
---|
| 247 | The ecCKD gas optics scheme is described here: |
---|
| 248 | |
---|
| 249 | - Hogan, R. J., and M. Matricardi, 2022: a tool for generating fast |
---|
| 250 | k-distribution gas-optics models for weather and climate |
---|
| 251 | applications. J. Adv. Modeling Earth Sys., in review. |
---|
| 252 | |
---|
| 253 | |
---|
| 254 | ## CONTACT |
---|
| 255 | |
---|
| 256 | Please email Robin Hogan <r.j.hogan@ecmwf.int> with any queries or bug |
---|
| 257 | fixes, but note that ECMWF does not commit to providing support to |
---|
| 258 | users of this software. |
---|