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

Final-final GFS v16 updates #531

Merged
merged 4 commits into from
Dec 14, 2020
Merged

Conversation

climbfuji
Copy link
Collaborator

@climbfuji climbfuji commented Dec 10, 2020

This PR:

  • adds a one-line change to GFS_surface_composites.F90 that allows us to reproduce the GFS v16 behavior so that the code can serve as reference for the GFS v17 development - contributed by @junwang-noaa and @yangfanglin

  • fixes a small bug in GFS_debug.F90 (not used by any of the suites by default, but useful for debugging), because zs is no longer in GFS_sfcprop but in GFS_control

Associated PRs:

#531
NOAA-EMC/fv3atm#212
ufs-community/ufs-weather-model#325

For regression testing, see ufs-community/ufs-weather-model#325

@climbfuji
Copy link
Collaborator Author

For clarification, Jun Wang is the one who pointed out this missing line. I tested it in various hashes of the model commits.

Thanks for the clarification, Fanglin. I changed the description. Want to make sure that those who did the work get the credit.

@junwang-noaa
Copy link
Collaborator

junwang-noaa commented Dec 11, 2020 via email

Copy link
Collaborator

@ShanSunNOAA ShanSunNOAA left a comment

Choose a reason for hiding this comment

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

Nice job. I approve.

physics/GFS_surface_composites.F90 Show resolved Hide resolved
physics/GFS_surface_composites.F90 Show resolved Hide resolved
@SMoorthi-emc
Copy link
Collaborator

SMoorthi-emc commented Dec 11, 2020 via email

@junwang-noaa
Copy link
Collaborator

junwang-noaa commented Dec 11, 2020 via email

@climbfuji
Copy link
Collaborator Author

Well, I see now it exactly causes confusion. Please see Dom's comments: that line *doesn't *make any difference - as we expected, because one of the following if statements is always true and tsfc gets updated again. So the model works the same without that line. I am not sure if we finished all RT yet, if we do, I still suggest removing it in next commit to avoid confusion. On Fri, Dec 11, 2020 at 7:32 AM SMoorthi-emc [email protected] wrote:

Jun, I think Moorthi and Shan are correct. This is what Shan said and what Moorthi confirmed:

I got one scenario that Line 574 is crucial:
if flag_cice=T with 100% sea ice, which means wet=F, then neither Line 579 (if .not. flag_cice) nor Line 583 (elseif wet) is true. In this case tsfc will not be updated without Line 574.

Therefore we this line or something equivalent is needed. I am suggesting the following instead of the newly added line, which does the same but is hopefully less confusing. See commit c7cae7d. This commit also removes a duplicate assignment

qss(i)    = qss_ice(i)

(there were two identical lines, just three lines apart)

@SMoorthi-emc
Copy link
Collaborator

SMoorthi-emc commented Dec 11, 2020 via email

@climbfuji
Copy link
Collaborator Author

Well, the logic in my new branch is hflx(i) = hflx_ice(i) qss(i) = qss_ice(i) tisfc(i) = tice(i) ! over lake ice (and sea ice when uncoupled) tsfc(i) = tsfc_ice(i) ! over lake (and ocean when uncoupled) ! if (flag_cice(i)) then if (wet(i) .and. cice(i) >= min_seaice) then ! this was already done for lake ice in sfc_sice txi = cice(i) txo = one - txi evap(i) = txi * evap_ice(i) + txo * evap_wat(i) hflx(i) = txi * hflx_ice(i) + txo * hflx_wat(i) tsfc(i) = txi * tsfc_ice(i) + txo * tsfc_wat(i) stress(i) = txi * stress_ice(i) + txo * stress_wat(i) qss(i) = txi * qss_ice(i) + txo * qss_wat(i) ep1d(i) = txi * ep1d_ice(i) + txo * ep1d_wat(i) zorl(i) = txi * zorl_ice(i) + txo * zorl_wat(i) snowd(i) = txi * snowd_ice(i) endif elseif (wet(i)) then ! return updated lake ice thickness & concentration to global array zorl(i) = cice(i)*zorl_ice(i) + (one-cice(i))*zorl_wat(i) endif ! if (wet(i)) then tsfco(i) = tsfc_wat(i) else tsfco(i) = tsfc(i) endif tsfcl(i) = tsfc(i) do k=1,kice ! store tiice in stc to reduce output in the nonfrac grid case stc(i,k) = tiice(i,k) enddo endif zorll(i) = zorl_lnd(i) zorlo(i) = zorl_wat(i) zorli(i) = zorl_ice(i) enddo endif ! if (frac_grid) which is how I am staying with. Moorthi On Fri, Dec 11, 2020 at 8:48 AM Dom Heinzeller [email protected] wrote:

Moorthi, I am not sure what to do with this. We want to make sure that the logic that the additional line 574 (or the equivalent) produces goes into this PR to create the reference tag for the GFS v16 production code, so that we can move on to GFS v17 development without being held up by trying to find a version that reproduces GFS v16. Forgive me if I am getting this wrong. If you have additional changes in your logic, then it's great if we can get those in after we created the GFS v16 reference tag in my opinion.

@climbfuji
Copy link
Collaborator Author

So, everyone, can I ask you to please choose between the version in commit 196603c and in commit c7cae7d so that we can put this to bed? Thank you.

@junwang-noaa
Copy link
Collaborator

junwang-noaa commented Dec 11, 2020 via email

@SMoorthi-emc
Copy link
Collaborator

SMoorthi-emc commented Dec 11, 2020 via email

@climbfuji
Copy link
Collaborator Author

Ok, agree with @junwang-noaa to use the version from 196603c. It's closer to what we want to move to (Moorthi's code) in the future anyway.

@ShanSunNOAA
Copy link
Collaborator

ShanSunNOAA commented Dec 11, 2020 via email

@junwang-noaa
Copy link
Collaborator

junwang-noaa commented Dec 11, 2020 via email

@ShanSunNOAA
Copy link
Collaborator

ShanSunNOAA commented Dec 11, 2020 via email

@yangfanglin
Copy link
Collaborator

yangfanglin commented Dec 11, 2020 via email

@ShanSunNOAA
Copy link
Collaborator

ShanSunNOAA commented Dec 11, 2020 via email

Copy link
Contributor

@llpcarson llpcarson left a comment

Choose a reason for hiding this comment

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

approved

@climbfuji climbfuji merged commit 8f4e4e1 into NCAR:master Dec 14, 2020
@climbfuji climbfuji deleted the final_gfsv16_changes branch June 27, 2022 03:12
HelinWei-NOAA pushed a commit to HelinWei-NOAA/ccpp-physics that referenced this pull request Feb 26, 2023
The current logic in CCPP_driver does not allow for buckets to be emptied every time-step.
This one-line modification fixes that.
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.

6 participants