earth-system-radiation / rte-rrtmgp

RTE+RRTMGP is a set of codes for computing radiative fluxes in planetary atmospheres.
BSD 3-Clause "New" or "Revised" License
74 stars 67 forks source link

Solar zenith angle can vary with height #173

Closed RobertPincus closed 2 years ago

RobertPincus commented 2 years ago

Allows for solar zenith angle (SZA = acos(mu0)) to vary by height within each column, motivated by "A round earth for climate models." In the radiative transfer solvers the reflectivity and transmissivity of each layer depends on the (local in height) mu0; where the sun is below the horizon (mu0 <=0) these are set to 0. This means that heating rates in the last sunlight layer have to consider only the divergence of diffuse radiation (see the example in extensions/mo_heating_rates.F90). Incident flux is determined by mu0 at the top of the atmosphere.

extensions/mo_zenith_angle_spherical_correction.F90 provides a way to calculate mu0(z) considering only geometric effects. I hope to add the ability to account for the changing index of refraction.

tests/test_zenith_angle_correction.F90 is a quick-and-dirty test (streams of text output) of the feature including the heating rate calculations. This makes us of tests/mo_recmip_profiles.F90 which creates example problems for arbitrary pressure grids based on the protocol for the Radiative-Convective Equilibrium MIP