-
Notifications
You must be signed in to change notification settings - Fork 166
Description
Several corrections or revisions are needed within the current cloud overlap coding in RRTMG_LW in radlw_main.F90 and RRTMG_SW in radsw_main.F90.
-
The EXP cloud overlap option (iovr=4) is currently only allowed to go down a separate path in the code that is labeled in comments as "HWRF" with the initials "mz" (in radlw_main.F90 and radsw_main.F90). This path follows an older coding structure that derives the correlation parameter, alpha, where it is used and that only allows a constant decorrelation length. This appears to me to be close to what was originally coded for HWRF several years ago and went operational in HWRF in 2018. In other words, the existing implementation of iovr=4 is obsolete. HWRF is currently operational with ER (iovr=5), using coding prepared for WRF and not using ccpp-physics.
-
The other cloud overlap options including ER go down a different path that appears to reflect the more recent implementation of generating the decorrelation length (constant or latitude-varying) and alpha prior to the radiation call using dedicated subroutines that are stored in radiation_cloud_overlap.F90 and are called from radiation_clouds.f. However, the iovr=5 option was altered after I provided it and does not work as intended. There is a subtle distinction between EXP and ER that requires altering the derived alpha based on the cloud fraction profile, and this step seems to have been lost in translation from the code I originally provided and is no longer happening anywhere in the code that I can find. Both iovr=4 and iovr=5 call subroutine get_alpha_exp, which only sets up alpha correctly for EXP. In other words, selecting iovr=5 will use EXP cloud overlap instead of ER, and iovr=4 is entirely prevented from using this code path (due to issue 1).
-
This third issue does not represent a problem, however, a design change occurred after I provided the code that will have to be reversed or revised. A new feature that I'm adding now will extend the vertical overlap to the cloud condensate variables, liquid water path and ice water path. My original code left these variables on the (larger) g-point dimension to allow this future expansion, but the code path represented by issue 2 above, which otherwise has the latest code structure, was altered to reduce the cloud condensate arrays from the g-point dimension to the (smaller) band dimension. Since I am now adding this future expansion, these arrays will have to be changed back to the g-point dimension and restored to the MCICA sub-column generator. However, my preference is that issues 1 and 2 be resolved first before I design the final code revisions for my new modifications.
-
Related to issue 3 is the sequence of how the cloud radiation routines are called, which was revised from my original coding. My preference, from the perspective of code clarity, is that the MCICA sub-column generator be called before the cloud optical properties are generated. The latter is done using either subroutine cldprop (on the band dimension) or subroutine cldprmc (on the g-point dimension). Someone moved routine "mcica_subcol" inside of "cldprop", which works as coded, but in my view the sequence is confusing. A better arrangement is to call "mcica_subcol" first, where the cloud fraction overlap, and if requested the new cloud condensate overlap, arrays can be set up, followed by calls either to cldprop, if only cloud fraction overlap is needed, or cldprmc, if both cloud fraction and cloud condensate overlap are requested.