-
Notifications
You must be signed in to change notification settings - Fork 34
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
Minor modification and bug fix in GFS cumulus convection schemes #232
base: ufs/dev
Are you sure you want to change the base?
Conversation
@rhaesung Please add one more under item 1. in the PR description: |
@JongilHan66 Done! |
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.
Looks good!
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.
@rhaesung These changes all look good to me.
I have a few tiny suggestions for the precision to make the code more portable.
physics/CONV/progsigma_calc.f90
Outdated
sigmab(i) = sigmain(i,k) | ||
else | ||
sigmab(i) = sigmab(i) / sumx(i) | ||
sigmab(i) = min(sigmab(i), 1.0) |
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.
Change 1.0
to 1._kind_phys
physics/CONV/progsigma_calc.f90
Outdated
sigmab(i)=0.03 | ||
do i = 1,im | ||
if(cnvflg(i))then | ||
DEN=MIN(termC(i)+termB(i),1.E8) |
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.
Same comment as above for all the fortran intrinsics in this block. (Explicitly setting the precision for these calls removes any ambiguity and makes to code more portable)
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.
@dustinswales Thanks! I've updated the code to replace the hardcoded precision constants with the appropriate precision.
The code of this PR was provided by @JongilHan66.
Modified prognostic updraft fraction (sigmab) calculation in 'progsigma_calc.f90' which is physically more sound:
a) moisture convergence calculation: integrate from the convection source level rather than from the cloud base
b) 2D advection of sigmab: sigmab advection averaged over the cloud layers rather than taking a maximum sigmab advection from k=2 to the model top
c) To suppress unrealistically large reflectivity in the model first time step, minimum sigmab at the first time step is set to zero
Fix in missing vertical transport of turbulent kinetic energy (TKE) when aerosol transport is turned on (samfdeepcnv.f & samfshalcnv.f)
Introduce TKE at model layer interfaces (tkeh) for use in convection schemes (GFS_typedefs.F90, GFS_typedefs.meta, satmedmfvdifq.F, satmedmfvdifq.meta, samfdeepcnv.f, samfdeepcnv.meta, samfshalcnv.f, and samfshalcnv.meta)
Vertical transports of hydrometeor variables are currently not allowed in the convection schemes. But vertical transports of number concentrations of only cloud water and ice are mistakenly allowed, which is fixed in this update (CCPP_typedefs.F90)
All the modifications and bug fixes above had neutral impacts on the GFS forecasts