Releases: earth-system-radiation/rte-rrtmgp
Encapsulated orientation, CMake, cloud optics
User facing changes:
- Adopts the
CMake
build system - Vertical directionality (
top_at_1
) is encapsulated within the arrays of optical properties rather than carried as an indepdent variable. - Cloud optical properties may be computed by-band (as before) or by g-point. New data in the data repo allows computations by g-point.
- Ice sizes are labled to make clear they are diameter, not radius
- Data version is updated to 1.9
Under the hood:
- Refinements to gas optics kernels courtesy of Thomas Jahns (#315). This changes answers nominally.
- Separate cloud optics kernels to accommodate the Python front end
- Kernels and front-end now use C-compatible Booleans rather than the Fortran default.
Development to this point has followed the Gitflow workflow; starting with this release we're going to move instead to a single protected main
branch and short-lived development branches. This will include removing the develop
and documentation
branches.
The RTE+RRTMGP libraries and data will be distributed via conda-forge
thanks to work by Makepath LLC.
Relabel ice sizes as diameter, cloud optics by g-point or band, update API
Ice sizes are relabeled as diameters, not radii
Code changes to allow cloud optical properties to be defined and computed on g-points
Data version 1.9
Updates to API - logical are always defined via C
Encapsulated orientation, CMake, Python and conda
This is a pre-release version of v1.9. The pre-release is meant to enable progress on conda packaging to support the Python front-end.
Changes relative to v1.8 include
- Changing the build system from Gnu Make to CMake to allow support for Windows and MacOS (initial work by Makepath LLC, revised by @skosukhin)
- A change to the Fortran API: vertical direction is now specified as part of
ty_optical_properties_arry
rather than as a logical variabletop_at_1
(#287) - Refinements to gas optics kernels courtesy of Thomas Jahns (#315). This changes answers nominally.
- Separate cloud optics kernels to accommodate the Python front end
As usual @skosukhin has kept both CMake and the continuous integration humming along efficiently.
Refactored two-stream, new LW source functions and quadrature, kernel API
Accumulated changes and bug fixes. Changes LW answers (data repo is alsoupdated).
- New LW weights and secants (Change LW quadrature angles #282)
- A single source function on levels (Simplify LW source functions #250)
- Kernel API header files in Fortran and C (Add kernel API #272)
- Refactored two-stream, fixing RTE shortwave kernel not vectorizing #215 (Re-vectorize SW two-stream #275)
- Buxfixes, change to internal build systems and continuous integration (thanks to @skosukhin for ongoing help)
What's Changed
- Deploy documentation from separate branch by @RobertPincus in #246
- CI should fail when individual tests fail by @RobertPincus in #256
- Backport Levante CI by @skosukhin in #257
- Backport Levante CI with NAG by @skosukhin in #260
- Backport the intent fix in lw_transport_noscat_up by @skosukhin in #262
- Reduce use of CI via manual runs by @RobertPincus in #264
- Refactored two-stream, new LW source functions and quadrature, kernel API by @RobertPincus in #284
Full Changelog: v1.7...v1.8
Reorganization, single precision, MERRA aerosols
New in release 1.7:
- Libraries can be built in single precision by changes in rte-kind/mo_rte_kind.F90. Differences with respect to double precision are roughly 0.13 W/m2.
- A class for computing the optical properties of aerosols following the MERRA representation has been added.
- The repository is reorganized into frontend and kernel directories for rte and rrtmgp. Data has been moved to a separate repository.
- Citation information has been added.
- As usual some bugs have been fixed, the use of OpenACC and OpenMP GPU offload directives continues to evolve, and the continous integration continues to be fine-tuned.
Updated shortwave cloud optics, documentation, continuous integration
Updated shortwave cloud optics changes all-sky answers by several W/m2. Small updates to documentation, other changes related to continuous integration.
Optimal angle, refactored gas optics
Refactored gas optics increases efficiency and reduces memory use. Optimal angle data is added to LW coefficient files; single-angle no-scattering calculations making use of this data are more accurate than using the standard diffusivity angle. See lw_clear_sky_optangle() in tests/clear_sky_regression.F90 for an examples. Other bug fixes (e.g. to multi-angle no-scattering calculations using default kernels), increased consistency between GPU and CPU kernels; small misc. improvements.
Reduced-resolution k-distributions; reduced memory traffic
Reduced-resolution k-distributions are updated and ready for production. Implementation is refined: Shortwave calculations are refactored to improve memory locality. When broadband fluxes are desired they are accumulated within the solvers, rather than in a separate reduction step. Misc. bug fixes and refinements.
Thanks to Dmitry Alexeev, Dustin Swales, Max Balsmeier.
Book keeping, clarifications, simplifications, OpenMP and OpenACC refinements
Updates to OpenMP and OpenACC implementations. Argument intent changed to allow use of a boundary condition. Fixes from ICON including more consistent turning on/off of error checking. Clarifications and removal of unused bits. Self-hosted CI now uses Github Actions. Thanks again to @alexeedm and @naromero77.
OpenMP GPU support, efficiency updates, streamlined make
OpenMP GPU offload, tested with CCE 11.0.0. Longwave Jacobians aren't computed if the optional arguments aren't provided. Finalization methods for optical properties arrays are introduced. Make is streamlined to use environment variables and omit config files. Small changes for efficiency and robustness. Continuous integration is evolved; includes gfortran 9 and 10 on Github actions; current Nvidia and Intel HPC compilers in containers; Cray CPU and OpenMP GPU and PGI 20 OpenACC.