Skip to content

Ufs gcyc #1130

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

Closed
wants to merge 5 commits into from
Closed

Ufs gcyc #1130

wants to merge 5 commits into from

Conversation

XuLi-NOAA
Copy link
Contributor

Background

In the uncoupled GFS, a utility is required to initialize and update/evolve the surface variables, which is called gcycle (Global Cycle).
However, currently, gcycle is applied without distinguishing between the ocean and lake water surfaces. In order to know if the gcycle needs to be applied, two logics to determine if the water surface is ocean or lake, and if it is coupled or uncoupled, need to be added.
The lake mask, lakefrac (1=lake, 0=non-lake), is available by reading a fix file and is available in ccpp physics Fortran code while a subroutine gcycle is called. Another logical variable, cplflx is available in ccpp code, but needs to be added in the subroutine gcycle.

Solutions

In the forecasting mode in CCPP physics

Cplflx (cplice) needs to be added in a ccpp subroutine gcycle
Figure out all the lake related variables (need to be updated with gcycle) , as follows:

tref(:) = foundation temperature over water surface, identical to tsfc over non-water surface
tsfc(:) = surface skin temperature
tsfco(:) = water Lake, ocean (or other like river) surface temperature
tisfc(:) = surface skin temperature over (sea or lake) ice
hice(:) = (sih) sea or lake ice thickness
fice(:) = (sic) sea or lake ice fraction/concentration
zorli(:) = surface roughness length over ice
zorlo(:) = surface_roughness_length_over_water
weasd(:) = water equiv of acc snow depth over land and (sea or lake) ice
snowd(:) = water equivalent snow depth
snoalb(:) = maximum snow albedo

This project is to let the current sfccycle subroutine does what it does (as is), but update the related variables (listed above) at Lake grids only and when the system is in a coupled model, with lakefrac and landfrac, and cplflx dependency. Concretely, this requires to save the listed variables before the call of sfccycle in gcycle.F90, then update them as above after the call of sfccycle.

Only three need to be modified:

Interstitials/UFS_SCM_NEPTUNE/gcycle.F90
Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90
Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.meta

The code has been done and tested.

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.

3 participants