-
Notifications
You must be signed in to change notification settings - Fork 23
Prognostic cloud fraction for TEMPO microphysics #146
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: gsl/develop
Are you sure you want to change the base?
Prognostic cloud fraction for TEMPO microphysics #146
Conversation
…loud fraction and cloud water
…physics driver, and to TEMPO driver
…d water and cloud fraction
| 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)) |
There was a problem hiding this comment.
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."/> |
There was a problem hiding this comment.
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" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
loud --> cloud?
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
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
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