Skip to content
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

Sm nov222021 #824

Merged
merged 47 commits into from
Jan 10, 2022
Merged

Sm nov222021 #824

merged 47 commits into from
Jan 10, 2022

Conversation

SMoorthi-emc
Copy link
Collaborator

This PR updates "GFS_surface_composites.F90" and the associated "meta" file to remove unnecessary (and erroneous code).
It also adds a limit on zorli for points with ice.
There are some other cosmetic changes in some other routines (primarily blanks)

@yangfanglin
Copy link
Collaborator

@JongilHan66 @HelinWei-NOAA could you please review this PR ?

Copy link
Collaborator

@tanyasmirnova tanyasmirnova left a comment

Choose a reason for hiding this comment

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

Most changes seem to be just cosmetic. I do not have any problems with these changes.

tsurf_ice(i) = tisfc(i)
ep1d_ice(i) = zero
gflx_ice(i) = zero
zorli(i) = max(1.0e-5, min(one, zorli(i)))
Copy link
Collaborator

Choose a reason for hiding this comment

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

@JongilHan66 @HelinWei-NOAA @tanyasmirnova This is the change where zorli gets its limits.

@@ -211,14 +209,14 @@ subroutine GFS_surface_composites_pre_run (im, flag_init, flag_restart, lkm, fra
uustar_wat(i) = uustar(i)
tsfc_wat(i) = tsfco(i)
tsurf_wat(i) = tsfco(i)
zorlo(i) = max(1.0e-5, min(one, zorlo(i)))
Copy link
Collaborator

Choose a reason for hiding this comment

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

zorlo gets its limits here

Copy link
Collaborator

@JongilHan66 JongilHan66 left a comment

Choose a reason for hiding this comment

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

The changes look ok for me.

Copy link
Collaborator

@grantfirl grantfirl left a comment

Choose a reason for hiding this comment

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

Thanks @SMoorthi-emc. Looks good to me.

@grantfirl
Copy link
Collaborator

High UFS commit queue priority due to this being needed for P8.

@grantfirl
Copy link
Collaborator

@SMoorthi-emc Shall I go ahead and submit upstream PRs to fv3atm and ufs-weather-model? Also, given the nature of these changes, I'm guessing that regression test baselines will need to be updated?

@SMoorthi-emc
Copy link
Collaborator Author

SMoorthi-emc commented Jan 4, 2022 via email

@SMoorthi-emc
Copy link
Collaborator Author

SMoorthi-emc commented Jan 5, 2022 via email

@SMoorthi-emc
Copy link
Collaborator Author

SMoorthi-emc commented Jan 5, 2022 via email

@SMoorthi-emc
Copy link
Collaborator Author

SMoorthi-emc commented Jan 5, 2022 via email

@SMoorthi-emc
Copy link
Collaborator Author

All, I had to modify "GFS_surface_composites.F90" to take care of a crash in NoahMP.
The modification involves reinstating the deleted code with modified logic.
(this mod should take care of any new icy points)
You may want to take a look again.
Thanks
Moorthi

do i=1,im
if (dry(i)) then
if (icy(i)) then
if (kdt == 1 .or. (.not. cplflx .or. lakefrac(i) > zero)) then
tem = one / (cice(i)*(one-frland(i)))
snowd_ice(i) = max(zero, (snowd(i) - snowd_lnd(i)*frland(i)) * tem)
weasd_ice(i) = max(zero, (weasd(i) - weasd_lnd(i)*frland(i)) * tem)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Moorthi, with RUC LSM snowd_ice and weasd_ice should not be recomputed here because they are computed internally. I think we have to add to the condition in brackets: lsm /= lsm_ruc.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Tanya,
I think all LSM's are called after calling this routine. As long as grid mean values are computed correctly, there should be no issue. When the coupled model is used, it is different. This loop takes care of the case when there is a new icy points if they happen to be defined within this routine.
Moorthi

Copy link
Collaborator

Choose a reason for hiding this comment

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

Moorthi, the snow depth on the land and ice fractions could be very different, and because RUC LSM computes both weasd_ice and weasd_lnd, it wants to carry them along separately. Therefore, they should not be recomputed here from the grid mean when RUC LSM is used. The grid mean snow depth could be used as the diagnostics variable, convenient for plotting.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I originally wanted to do this computation on only new icy points, but unfortunately, there is no memory of previous "icy" points. I should also point out that "sfc_sice.f" also computes ice point variables, just like RUC does. While the computation here is not necessary for the icy points that remain icy, it does not hurt.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Again, this is not special to RUC as what you stated is true for non-RUC also as in those cases ice is computed in sfc_sice.f
Well, I welcome anyone to come up with better alternative.
I should point out that this is already happening in the current code- so this should not be a point for rejecting my update as it improves on what currently exists.

elseif (icy(i)) then
endif
elseif (icy(i)) then
if (kdt == 1 .or. (.not. cplflx .or. lakefrac(i) > zero)) then
tem = one / cice(i)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Same here, with RUC LSM it should not be done.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I just disagree.

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.

7 participants