Skip to content

Conversation

@AndersJensen-NOAA
Copy link
Collaborator

@AndersJensen-NOAA AndersJensen-NOAA commented Jul 14, 2025

This PR adds prognostic sub-grid scale (sgs) clouds to TEMPO microphysics and MPAS. This option is turned on by setting config_tempo_cldfra=.true. in an MPAS namelist. This option forces the radiation to use this prognostic cloud fraction along with sgs cloud water and cloud ice mixing ratios.

setting config_tempo_incld=.true. should be used with the cloud fraction scheme to use in-cloud microphysical processes.

Two state variables (which are advected) have been added, qal and qai, which are the prognostic cloud fractions for cloud water and cloud ice.

Testing and relations to other Pull Requests should be added as subsequent comments.

See the below examples for more information.
MPAS-Dev/MPAS#930
MPAS-Dev/MPAS#931

Information on running mandatory regression tests on Jet can be found here and the results pasted below.

regression test case results
PASTE compare_run_testcases AND/OR compare_create_testcases TEXT HERE

@AndersJensen-NOAA AndersJensen-NOAA marked this pull request as ready for review August 19, 2025 03:40
if(.not.allocated(rqiblten_p)) allocate(rqiblten_p(ims:ime,kms:kme,jms:jme))
if(.not.allocated(rthratenlw_p)) allocate(rthratenlw_p(ims:ime,kms:kme,jms:jme))
if(.not.allocated(rthratensw_p)) allocate(rthratensw_p(ims:ime,kms:kme,jms:jme))
! if(.not.allocated(cldfrac_p) ) allocate(cldfrac_p(ims:ime,kms:kme,jms:jme))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm curious as to why the allocation checks for cldfrac_p and qcbl_p are commented out? (Ditto their corresponding deallocation checks later on.)

<package name="mp_tempo_in" description="parameterization of TEMPO cloud microphysics."/>
<package name="tempo_aerosolaware_in" description="variables for TEMPO with aerosol-aware microphysics."/>
<package name="tempo_hailaware_in" description="variables for TEMPO hail-aware microphysics."/>
<package name="tempo_cldfra_in" description="variables for TEMPO prognostic cloud fraction microphysics."/>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Annoying comment: there are two spaces between "fraction" and "microphysics."

packages="mp_thompson_aers_in;tempo_aerosolaware_in"/>

<var name="qal" array_group="passive" units=""
description="Prognostic loud liquid fraction"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

loud --> cloud?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that is kind of a loud typo

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tracing the cldfra and incld settings in module_mp_tempo_main.F90, I see three combinations:

  • If cldfra is set to true and incld was specified, use whatever value of incld was specified.
  • If cldfra is set to true and incld was not specified, set incld to true.
  • If cldfra is set to false, no matter whether incld was specified, set incld to false.

Based on the discussion at the physics coupling meeting today, it seems like the optimal(?) behavior is either cldfra and incld = true or cldfra and incld = false rather than a hybrid of the two. Thus, I might suggest forcing incld = true if cldfra = true (in which case incld may not be needed as a registry/namelist variable).

qai_p(i,k,j) = qai(k,i)
cldfrac_p(i,k,j) = max(qal(k,i), qai(k,i))

if (qirad_p(i,k,j) > 1.e-7) then
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

@dustinswales dustinswales Dec 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe something like:

cldfrac_p(i,k,j) = max(0., max(qal(k,i), qai(k,i))) ! Avoid cldfrac < 0
if (cldfrac_p(i,k,j) .gt. 0) then
   if (qirad_p(i,k,j) > 1.e-7) then ! Assume all Ice condensate at some threshold?
      qirad_p(i,k,j) = max(0. , qirad_p(i,k,j)+ qsrad_p(i,k,j))
   else 
      qirad_p(i,k,j) = max(0. , qirad_p(i,k,j)) ! All ice OR mixed phase
   endif
   qsrad_p(i,k,j) = max(0. , qsrad_p(i,k,j)) ! Liqud phase
else
   qirad_p(i,k,j) = 0. ! No cloud
   qsrad_p(i,k,j) = 0. ! No cloud
endif

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants