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

UFS/dev PR#6 #973

Merged
merged 7 commits into from
Oct 26, 2022
27 changes: 27 additions & 0 deletions physics/lsm_ruc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1043,6 +1043,20 @@ subroutine lsm_ruc_run & ! inputs
z0_lnd(i,j) = z0rl_lnd(i)/100.
znt_lnd(i,j) = z0rl_lnd(i)/100.

! Workaround needed for subnormal numbers. This should be
! done after all other sanity checks, in case a sanity check
! results in subnormal numbers.
!
! This bug was caught by the UFS gfortran debug-mode
! regression tests, and the fix is necessary to pass those
! tests.
if(abs(snowh_lnd(i,j))<1e-20) then
snowh_lnd(i,j)=0
endif
if(abs(sneqv_lnd(i,j))<1e-20) then
sneqv_lnd(i,j)=0
endif

if(debug_print) then
if(me==0 ) then
write (0,*)'before LSMRUC for land'
Expand Down Expand Up @@ -1360,6 +1374,19 @@ subroutine lsm_ruc_run & ! inputs
z0_ice(i,j) = z0rl_ice(i)/100.
znt_ice(i,j) = z0rl_ice(i)/100.

! Workaround needed for subnormal numbers. This should be
! done after all other sanity checks, in case a sanity check
! results in subnormal numbers.
!
! Although this bug has not been triggered yet, it is expected
! to be, like the _lnd variants many lines up from here.
if(abs(snowh_ice(i,j))<1e-20) then
snowh_ice(i,j)=0
endif
if(abs(sneqv_ice(i,j))<1e-20) then
sneqv_ice(i,j)=0
endif

!> - Call RUC LSM lsmruc() for ice.
call lsmruc( &
& delt, flag_init, lsm_cold_start, kdt, iter, nsoil, &
Expand Down