Are there any linked Issues or Pull Requests?
No response
Brief description
Various numerical issues can cause the in-cloud water content (qcl/cf_liq) to go to silly large values (e.g. the transport scheme is not bound to keep the two fields qcl, cf_liq consistent with eachother). Such instances can cause unrealistic behaviours in microphysics schemes and in CoMorph's convective triggering calculation. We make the following changes:
- Add an explicit check on the in-cloud water content in the PC2 cloud-scheme's sanity-checking routine pc2_checks.F90, to increase the cloud-fraction so-as to reduce qcl/cf_liq if it exceeds a plausible limit (and similar for ice-cloud).
- Add an equivalent check for the prognostic precip fraction in the checking routine lsp_precfrac_checks.F90.
- Add an option to call the precip fraction checking routine before calling convection, in fast_physics_alg_mod.X90.
- Fix a rarely-exposed bug in pc2_checks.F90, where an existing check to create ice-fraction if it equals zero where ice-mass is non-zero could make the ice-fraction bigger than 1 (only exposed when ice-mass is unreasonably large).
The cloud and precip fractions were already limited to avoid in-cloud water contents exceeding a hardwired threshold of 5 g kg-1 on input to (and output from) CoMorph, in subroutine fracs_consistency, called from conv_comorph_kernel_mod.F90. But these checks were only done if using CoMorph; it makes more sense for the checks to form part of the cloud / precip fraction schemes themselves. The call to fracs_consistency on input to CoMorph is now skipped if the new checking code is on. The new in-cloud water content limiting in pc2_checks.F90 and lsp_precfrac_checks.F90 calculates a variable max limit (instead of a fixed 5 g kg-1); the max limit now scales with the cloud or precip fraction, so that it is lower when the fraction is extremely small. This better-targets the limiting at tiny "noise" values of water-content and fraction, while leaving physical large in-cloud water contents intact. Also, the max limit now scales with the mean total water content in the layer below, avoiding the need for an ad-hoc dimensional constant (using the mean value below instead of just the value on the current model-level avoids overly-strict limiting where convection detrains high water-contents into very dry air at high altitude).
Note that the subroutine lsp_precfrac_checks.F90 (called to impose another sanity-limit on the prognostic precip fraction at the end of the timestep) already existed in the UM and was used in CoMA9, but had simply not been ported to LFRic yet. This PR introduces this subroutine call near end-of-timestep in semi_implicit_timestep_alg_mod.X90 consistent with the UM, and so will change KGO for all configurations that use the prognostic precip fraction.
Further details of the issue.
Equivalent UM branch: vn14.1_max_in_cloud_checks
lfric_apps branch: vn3.1_max_in_cloud_checks
Are there any linked Issues or Pull Requests?
No response
Brief description
Various numerical issues can cause the in-cloud water content (qcl/cf_liq) to go to silly large values (e.g. the transport scheme is not bound to keep the two fields qcl, cf_liq consistent with eachother). Such instances can cause unrealistic behaviours in microphysics schemes and in CoMorph's convective triggering calculation. We make the following changes:
The cloud and precip fractions were already limited to avoid in-cloud water contents exceeding a hardwired threshold of 5 g kg-1 on input to (and output from) CoMorph, in subroutine
fracs_consistency, called from conv_comorph_kernel_mod.F90. But these checks were only done if using CoMorph; it makes more sense for the checks to form part of the cloud / precip fraction schemes themselves. The call tofracs_consistencyon input to CoMorph is now skipped if the new checking code is on. The new in-cloud water content limiting in pc2_checks.F90 and lsp_precfrac_checks.F90 calculates a variable max limit (instead of a fixed 5 g kg-1); the max limit now scales with the cloud or precip fraction, so that it is lower when the fraction is extremely small. This better-targets the limiting at tiny "noise" values of water-content and fraction, while leaving physical large in-cloud water contents intact. Also, the max limit now scales with the mean total water content in the layer below, avoiding the need for an ad-hoc dimensional constant (using the mean value below instead of just the value on the current model-level avoids overly-strict limiting where convection detrains high water-contents into very dry air at high altitude).Note that the subroutine lsp_precfrac_checks.F90 (called to impose another sanity-limit on the prognostic precip fraction at the end of the timestep) already existed in the UM and was used in CoMA9, but had simply not been ported to LFRic yet. This PR introduces this subroutine call near end-of-timestep in semi_implicit_timestep_alg_mod.X90 consistent with the UM, and so will change KGO for all configurations that use the prognostic precip fraction.
Further details of the issue.
Equivalent UM branch: vn14.1_max_in_cloud_checks
lfric_apps branch: vn3.1_max_in_cloud_checks