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

On ufs-community/ccpp-physics Issue #172 #173

Merged
merged 2 commits into from
Feb 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_l
real(kind=kind_phys), dimension(:), intent(in ) :: landfrac, lakefrac, lakedepth, oceanfrac
real(kind=kind_phys), dimension(:), intent(inout) :: cice, hice
real(kind=kind_phys), dimension(:), intent( out) :: frland
real(kind=kind_phys), dimension(:), intent(in ) :: snowd, tprcp, uustar, weasd, qss
real(kind=kind_phys), dimension(:), intent(in ) :: snowd, tprcp, uustar, weasd, qss, tisfc

real(kind=kind_phys), dimension(:), intent(inout) :: tsfc, tsfco, tsfcl, tisfc
real(kind=kind_phys), dimension(:), intent(inout) :: tsfc, tsfco, tsfcl
real(kind=kind_phys), dimension(:), intent(inout) :: snowd_lnd, snowd_ice, tprcp_wat, &
tprcp_lnd, tprcp_ice, tsfc_wat, tsurf_wat,tsurf_lnd, tsurf_ice, &
uustar_wat, uustar_lnd, uustar_ice, weasd_lnd, weasd_ice, &
Expand Down Expand Up @@ -86,7 +86,6 @@ subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_l
if (oceanfrac(i) > zero) then
if (cice(i) >= min_seaice) then
icy(i) = .true.
tisfc(i) = max(timin, min(tisfc(i), tgice))
if (cplflx) then
islmsk_cice(i) = 4
flag_cice(i) = .true.
Expand All @@ -111,7 +110,6 @@ subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_l
if (cice(i) >= min_lakeice) then
icy(i) = .true.
islmsk(i) = 2
tisfc(i) = max(timin, min(tisfc(i), tgice))
Copy link
Collaborator

Choose a reason for hiding this comment

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

Could you confirm if the intent of tisfc for sea ice will also be applied to lake ice?

Copy link
Author

Choose a reason for hiding this comment

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

Mike Barlage confirmed that it should be the lake ice model to determine the ice temperature, not here in the atmospheric model.

Shan

Copy link
Collaborator

Choose a reason for hiding this comment

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

As the PoC of the CLM lake model, @tanyasmirnova Could you confirm that?

Copy link
Collaborator

Choose a reason for hiding this comment

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

@mzhangw The CLM model sends ice temperature into tisfc(i) variable. However, the line you point to should not be used with the CLM model. The testing of the CLM model has been done with frac_grid = .false., therefore the specific for the CLM lake model code is in the part of the code when frac_land=.false.:

186 else ! Not ocean and not land
187 is_clm = lkm>0 .and. iopt_lake==iopt_lake_clm .and. use_lake_model(i)>0
188 if (cice(i) >= min_lakeice) then
189 icy(i) = .true.
190 if(.not.is_clm) then
191 tisfc(i) = max(timin, min(tisfc(i), tgice))
192 endif
193 islmsk(i) = 2
194 else
195 cice(i) = zero
196 hice(i) = zero
197 islmsk(i) = 0
198 icy(i) = .false.
199 endif
200 islmsk_cice(i) = islmsk(i)
201 flag_cice(i) = .false.
202 if(is_clm) then
203 wet(i) = .true.
204 if (icy(i)) then
205 tsfco(i) = max(tisfc(i), tgice)
206 endif
207 else if(cice(i) < one) then
208 wet(i) = .true. ! some open lake
209 if (icy(i)) then
210 tsfco(i) = max(tisfc(i), tgice)
211 endif
212 endif
213 endif

Copy link
Collaborator

Choose a reason for hiding this comment

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

@mzhangw @tanyasmirnova Following up on this discussion, so the changes in this PR are OK and don't need to be modified for CLM, correct?

else
cice(i) = zero
hice(i) = zero
Expand Down Expand Up @@ -151,7 +149,6 @@ subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_l
if (oceanfrac(i) > zero) then
if (cice(i) >= min_seaice) then
icy(i) = .true.
tisfc(i) = max(timin, min(tisfc(i), tgice))
! This cplice namelist option was added to deal with the
! situation of the FV3ATM-HYCOM coupling without an active sea
! ice (e.g., CICE6) component. By default, the cplice is true
Expand Down Expand Up @@ -187,9 +184,6 @@ subroutine GFS_surface_composites_pre_run (im, lkm, frac_grid, iopt_lake, iopt_l
is_clm = lkm>0 .and. iopt_lake==iopt_lake_clm .and. use_lake_model(i)>0
if (cice(i) >= min_lakeice) then
icy(i) = .true.
if(.not.is_clm) then
tisfc(i) = max(timin, min(tisfc(i), tgice))
endif
islmsk(i) = 2
else
cice(i) = zero
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
intent = in
[tsurf_wat]
standard_name = surface_skin_temperature_after_iteration_over_water
long_name = surface skin temperature after iteration over water
Expand Down