Updating SGS cloud interstitial to add Chab-Becht cloud fraction and …#122
Conversation
| & clouds1,clouds2,clouds3,clouds4,clouds5 | ||
| real(kind=kind_phys), dimension(:,:), intent(inout) :: qc_save, qi_save | ||
| real(kind=kind_phys), dimension(:,:), intent(inout) :: qci_conv | ||
| real(kind=kind_phys), dimension(:,:), intent(in) :: ud_mf |
There was a problem hiding this comment.
On thing to be aware of: ud_mf is in the GFS_interstitial DDT and as far as I can see it gets set/reset in the physics group. Since it is intent(in) here, you probably get invalid data passed in (from a different block)
There was a problem hiding this comment.
You are wise to be concerned, but in this case, I think it's OK. Here is a brief printout of ud_mf, which has reasonable values of mass-flux (although sometime zero - maybe the convection isn't reaching that high at some i points):
k= 20 ud_mf= 0.121096490473802
k= 20 ud_mf= 0.000000000000000E+000
k= 20 ud_mf= 0.719252198946091
k= 20 ud_mf= 1.83385869435230
k= 20 ud_mf= 1.69616072660016
k= 32 ud_mf= 1.70287760640253
k= 32 ud_mf= 1.25508844531819
k= 32 ud_mf= 1.30862285882288
k= 32 ud_mf= 1.79306649029620
k= 32 ud_mf= 0.858321688490849
k= 32 ud_mf= 0.471099592930162
k= 32 ud_mf= 0.901912835814989
k= 32 ud_mf= 1.15600537456719
k= 20 ud_mf= 1.39565460657562
k= 20 ud_mf= 1.32165535435073
k= 21 ud_mf= 0.000000000000000E+000
k= 21 ud_mf= 0.000000000000000E+000
k= 21 ud_mf= 0.000000000000000E+000
k= 21 ud_mf= 0.000000000000000E+000
k= 21 ud_mf= 0.000000000000000E+000
k= 21 ud_mf= 0.689175993672929
k= 21 ud_mf= 0.388614361705108
And here is an example of the cloud fractions at the upper-levels produced by these modifications (right) compared to when leveraging the MYNN stratus cloud fraction (left):
These results are within the bounds of expectations to me.
There was a problem hiding this comment.
Just to be clear, I agree with Dom that this shouldn't work. I am investigating why it may OR how I can make sure it works.
There was a problem hiding this comment.
OK... I was puzzled as to how this code seems to work, so I:
- added a "ud_mf_gf" in the TBD block,
- set ud_mf_gf(i,k) = ud_mf(i,k) in the GF driver,
- piped ud_mf_gf into module_SGSCloud_RadPre.f90 instead of ud_mf.
- Ended up with almost identical results
I would happily attach an image for proof but this web interface is not allowing me to do so (error: "Something went really wrong, and we can't process that file).
So, even though either method produces basically the same answer (although not bit-4-bit identical), I suggest we go with this updated method just because we know the TBD block is saved in memory. Note that I failed in converting ud_mf into a TBD array. It failed at compile time and I don't know why. Apparently, it takes more than simply modifying GFS_typedefs.F90 and GFS_debug.F90...
Happy to hear any comments on this.
There was a problem hiding this comment.
You'll have to move it in GFS_typedefs.F90, GFS_typedefs.meta, and in GFS_debug.F90. In the metadata file, the entry ud_mf must be moved into the metadata section for the tbd type.
There was a problem hiding this comment.
Thanks Dom. I missed the ud_mf move in GFS_typedefs.meta. Now it compiles and runs and I don't need the additional array. As far as I can tell, this code is ready for the regression tests.
There was a problem hiding this comment.
Sam,
Perhaps we can ask Haiqin and Hannah to review this PR?
-joe
There was a problem hiding this comment.
Just curious, did moving ud_mf into Tbd have an impact on results?
There was a problem hiding this comment.
No, by eye the cloud fractions looked identical, but it was not bit-4-bit identical.
|
|
||
| Tc = T3D(i,k) - 273.15 | ||
| !Partition the convective clouds into water & frozen species | ||
| liqfrac = min(1., max(0., (Tk-244.)/29.)) |
There was a problem hiding this comment.
I noticed that min(1., max(0., (T3D(i,k)-244.)/25.)) switched to min(1., max(0., (Tk-244.)/29.)). Is the switch from 25 to 29 in the dominator done purposely, or is it a typo?
There was a problem hiding this comment.
It was done on purpose, but I have plenty of doubt as to which is optimal. In reality, the partitioning of water vs frozen condensate is more than a function of temperature, so both values are wrong.
In this case, since most condensate between 0 and -4 C is in water phase, maybe we should change it back to 25. If you prefer it changed to 25, I 'll do it.
This tweak won't require new regression tests.
There was a problem hiding this comment.
I am fine with this change, just wanted to make sure something didn't slip through unknowingly
hannahcbarnes
left a comment
There was a problem hiding this comment.
This looks good to me. I am looking forward to testing it out on our GFS+GF runs.
haiqinli
left a comment
There was a problem hiding this comment.
It looks good to me. Thanks.
Updates to C3 and SAS convection schemes

This modification adds: