https://github.com/climlab/climlab-rrtmg
A stand-along Python wrapper for the RRTMG radiation modules
https://github.com/climlab/climlab-rrtmg
Last synced: 8 months ago
JSON representation
A stand-along Python wrapper for the RRTMG radiation modules
- Host: GitHub
- URL: https://github.com/climlab/climlab-rrtmg
- Owner: climlab
- License: mit
- Created: 2022-02-22T01:39:50.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-02-26T23:04:46.000Z (over 1 year ago)
- Last Synced: 2025-06-25T08:42:27.546Z (12 months ago)
- Language: Fortran
- Homepage:
- Size: 1.9 MB
- Stars: 8
- Watchers: 1
- Forks: 5
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# climlab-rrtmg
[](https://github.com/climlab/climlab-rrtmg/actions/workflows/build-and-test.yml)
Brian Rose, University at Albany
## About
This is a stand-alone Python wrapper for the [RRTMG](http://rtweb.aer.com/rrtm_frame.html) radiation modules.
The primary use-case is to drive the RRTMG radiation processes in [climlab](https://climlab.readthedocs.io/),
but it can be used as a stand-alone radiation model if you are familiar with the
RRTMG Fortran interface. This is a lightweight wrapper that emulates the Fortran
interface as closely as possible.
Currently we are wrapping RRTMG_LW v4.85 and RRTMG_SW v4.0. The Fortran source code
is included in this repository. The latest versions 5.0 of the RRTMG source code
are available on GitHub [here](https://github.com/AER-RC)
This wrapper includes the following modifications:
- RRTMG_LW is modified to allow reporting of OLR components in spectral bands,
as illustrated using climlab
[here](https://climlab.readthedocs.io/en/latest/courseware/Spectral_OLR_with_RRTMG.html).
This modification is strictly diagnostic does not change any other behavior of RRTMG_LW.
- RRTMG_SW is modified to allow gridpoint-specific values of the input parameter `adjes`
which is the adjustment to total solar irradiance.
The parameter `adjes` is used within RRTMG_SW to account for time-of-year adjustments
to Earth-Sun distance. Latest versions of climlab compute non-uniform values of
`irradiance_factor` to compensate for [different diurnal averages of the solar zenith angle](https://climlab.readthedocs.io/en/latest/api/climlab.radiation.insolation.html).
climlab's `irradiance_factor` is mapped to `adjes` when this RRTMG driver is called from climlab.
## Installation
Pre-built binaries for many platforms are available from [conda-forge](https://conda-forge.org).
To install in the current environment:
```
conda install climlab-rrtmg --channel conda-forge
```
or create a self-contained environment:
```
conda create --name my_env python=3.13 climlab-rrtmg --channel conda-forge
conda activate my_env
```
See below for instructions on how to build from source.
## Example usage
You can import the modules into a Python session with
```
from climlab_rrtmg import rrtmg_lw, rrtmg_sw
```
The main RRTMG drivers are exposed through
```
rrtmg_lw.climlab_rrtmg_lw()
```
and
```
rrtmg_sw.climlab_rrtmg_sw()
```
Please see the directory `climlab_rrtmg/tests/` directory in this repository
for working examples that set up all the necessary input arrays and call the drivers.
## Building from source
Here are instructions to create a build environment (including Fortran compiler)
with conda and build using f2py.
To build:
```
conda env create --file ./ci/requirements.yml
conda activate rrtmg_build_env
python -m pip install . --no-deps -vv
```
To run tests, do this from any directory other than the climlab-rrtmg repo:
```
pytest -v --pyargs climlab_rrtmg
```
## Version history
- Version 0.4.1 (late Feburary 2025) is a bug fix, now properly exposing some constants defined in the Fortran code to the Python wrapper.
- Version 0.4 (released February 2025) is a major refactor of the build system so this package can run on Python 3.12 and above. The build now uses [meson](https://mesonbuild.com/).
- Version 0.3 (released January 2025) includes the modification for grid-variable `adjes` described above. It is designed to work with climlab v0.9 and higher.
- Version 0.2 is the first public release (April 2022).
The Python wrapper code has been extracted from
[climlab v0.7.13](https://github.com/brian-rose/climlab/releases/tag/v0.7.13).