Skip to content

Impose max limit on in-cloud water-content in pc2_checks #243

@MichaelWhitall

Description

@MichaelWhitall

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

Metadata

Metadata

Labels

enhancementNew feature or request
No fields configured for Feature.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions