Skip to content

Commit

Permalink
Add read of the roughness length fields at land, water and ice.
Browse files Browse the repository at this point in the history
Follow routine gcycle to prepare roughness length variable
for call to sfcsub.F

Fixes ufs-community#549
  • Loading branch information
GeorgeGayno-NOAA committed Aug 30, 2021
1 parent 505a392 commit 4592911
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 5 deletions.
43 changes: 39 additions & 4 deletions sorc/global_cycle.fd/cycle.f90
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,7 @@ SUBROUTINE SFCDRV(LUGB, IDIM,JDIM,LSM,LENSFC,LSOIL,DELTSFC, &
!! start.
REAL, ALLOCATABLE :: STC_BCK(:,:), SMC_BCK(:,:), SLC_BCK(:,:)
REAL, ALLOCATABLE :: SLIFCS_FG(:), LAND_FRAC(:)
REAL, ALLOCATABLE :: ZORLI(:), ZORLL(:), ZORLO(:)
INTEGER, ALLOCATABLE :: SOILSNOW_FG_MASK(:), SOILSNOW_MASK(:)

TYPE(NSST_DATA) :: NSST
Expand Down Expand Up @@ -388,7 +389,12 @@ SUBROUTINE SFCDRV(LUGB, IDIM,JDIM,LSM,LENSFC,LSOIL,DELTSFC, &

frac_grid = .true.

IF(FRAC_GRID) ALLOCATE(LAND_FRAC(LENSFC))
IF(FRAC_GRID) THEN
ALLOCATE(LAND_FRAC(LENSFC))
ALLOCATE(ZORLI(LENSFC))
ALLOCATE(ZORLL(LENSFC))
ALLOCATE(ZORLO(LENSFC))
ENDIF

!--------------------------------------------------------------------------------
! READ THE OROGRAPHY AND GRID POINT LAT/LONS FOR THE CUBED-SPHERE TILE.
Expand Down Expand Up @@ -452,13 +458,24 @@ SUBROUTINE SFCDRV(LUGB, IDIM,JDIM,LSM,LENSFC,LSOIL,DELTSFC, &
! READ THE INPUT SURFACE DATA ON THE CUBED-SPHERE TILE.
!--------------------------------------------------------------------------------

IF(FRAC_GRID)THEN
CALL READ_DATA(TSFFCS,SMCFCS,SNOFCS,STCFCS,TG3FCS,ZORFCS, &
CVFCS,CVBFCS,CVTFCS,ALBFCS,SLIFCS, &
VEGFCS,CNPFCS,F10M,VETFCS,SOTFCS, &
ALFFCS,USTAR,FMM,FHH,SIHFCS,SICFCS, &
SITFCS,TPRCP,SRFLAG,SWDFCS,VMNFCS, &
VMXFCS,SLCFCS,SLPFCS,ABSFCS,T2M,Q2M, &
SLMASK,ZSOIL,LSOIL,LENSFC,DO_NSST,NSST, &
ZORLI,ZORLL,ZORLO)
ELSE
CALL READ_DATA(TSFFCS,SMCFCS,SNOFCS,STCFCS,TG3FCS,ZORFCS, &
CVFCS,CVBFCS,CVTFCS,ALBFCS,SLIFCS, &
VEGFCS,CNPFCS,F10M,VETFCS,SOTFCS, &
ALFFCS,USTAR,FMM,FHH,SIHFCS,SICFCS, &
SITFCS,TPRCP,SRFLAG,SWDFCS,VMNFCS, &
VMXFCS,SLCFCS,SLPFCS,ABSFCS,T2M,Q2M, &
SLMASK,ZSOIL,LSOIL,LENSFC,DO_NSST,NSST)
ENDIF

IF (USE_UFO) THEN
PRINT*
Expand Down Expand Up @@ -511,6 +528,14 @@ SUBROUTINE SFCDRV(LUGB, IDIM,JDIM,LSM,LENSFC,LSOIL,DELTSFC, &
SLMSKW(I) = 0.0_KIND_IO8
ENDIF
ENDIF
ZORFCS(I) = ZORLL(I)
IF (NINT(SLMSKL(I)) == 0) THEN
IF (SLMASK(I) > 1.99_KIND_IO8) then
ZORFCS(I) = ZORLI(I)
ELSE
ZORFCS(I) = ZORLO(I)
ENDIF
ENDIF
ENDDO

DEALLOCATE(LAND_FRAC)
Expand All @@ -529,8 +554,6 @@ SUBROUTINE SFCDRV(LUGB, IDIM,JDIM,LSM,LENSFC,LSOIL,DELTSFC, &

ENDIF

stop 6

min_seaice = 0.15
min_lakeice = 0.15
MIN_ICE = min_seaice
Expand All @@ -549,7 +572,19 @@ SUBROUTINE SFCDRV(LUGB, IDIM,JDIM,LSM,LENSFC,LSOIL,DELTSFC, &
SZ_NML, INPUT_NML_FILE, &
min_ice, &
IALB,ISOT,IVEGSRC,TILE_NUM,I_INDEX,J_INDEX)
ENDIF

DO I=1,LENSFC
ZORLL(I) = ZORFCS(I)
IF (NINT(SLMSKL(I)) == 0) THEN
IF (SLMASK(I) > 1.99_KIND_IO8) THEN
ZORLI(I) = ZORFCS(I)
ELSEIF (SLMASK(I) < 0.1_KIND_IO8) THEN
ZORLO(I) = ZORFCS(I)
ENDIF
ENDIF
ENDDO

ENDIF ! do_sfccycle

!--------------------------------------------------------------------------------
! IF RUNNING WITH NSST, READ IN GSI FILE WITH THE UPDATED INCREMENTS (ON THE
Expand Down
29 changes: 28 additions & 1 deletion sorc/global_cycle.fd/read_write_data.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1258,7 +1258,8 @@ SUBROUTINE READ_DATA(TSFFCS,SMCFCS,SNOFCS,STCFCS, &
TPRCP,SRFLAG,SWDFCS, &
VMNFCS,VMXFCS,SLCFCS, &
SLPFCS,ABSFCS,T2M,Q2M,SLMASK, &
ZSOIL,LSOIL,LENSFC,DO_NSST,NSST)
ZSOIL,LSOIL,LENSFC,DO_NSST,NSST, &
ZORLI,ZORLL,ZORLO)
USE MPI

IMPLICIT NONE
Expand All @@ -1267,6 +1268,8 @@ SUBROUTINE READ_DATA(TSFFCS,SMCFCS,SNOFCS,STCFCS, &

LOGICAL, INTENT(IN) :: DO_NSST

REAL, INTENT(OUT), OPTIONAL :: ZORLI(LENSFC), ZORLL(LENSFC)
REAL, INTENT(OUT), OPTIONAL :: ZORLO(LENSFC)
REAL, INTENT(OUT) :: CVFCS(LENSFC), CVBFCS(LENSFC)
REAL, INTENT(OUT) :: CVTFCS(LENSFC), ALBFCS(LENSFC,4)
REAL, INTENT(OUT) :: SLIFCS(LENSFC), CNPFCS(LENSFC)
Expand Down Expand Up @@ -1515,6 +1518,30 @@ SUBROUTINE READ_DATA(TSFFCS,SMCFCS,SNOFCS,STCFCS, &
CALL NETCDF_ERR(ERROR, 'READING q2m' )
Q2M = RESHAPE(DUMMY, (/LENSFC/))

IF(PRESENT(ZORLI)) THEN
ERROR=NF90_INQ_VARID(NCID, "zorli", ID_VAR)
CALL NETCDF_ERR(ERROR, 'READING zorli ID' )
ERROR=NF90_GET_VAR(NCID, ID_VAR, dummy)
CALL NETCDF_ERR(ERROR, 'READING zorli' )
ZORLI = RESHAPE(DUMMY, (/LENSFC/))
ENDIF

IF(PRESENT(ZORLL)) THEN
ERROR=NF90_INQ_VARID(NCID, "zorll", ID_VAR)
CALL NETCDF_ERR(ERROR, 'READING zorll ID' )
ERROR=NF90_GET_VAR(NCID, ID_VAR, dummy)
CALL NETCDF_ERR(ERROR, 'READING zorll' )
ZORLL = RESHAPE(DUMMY, (/LENSFC/))
ENDIF

IF(PRESENT(ZORLO)) THEN
ERROR=NF90_INQ_VARID(NCID, "zorlw", ID_VAR)
CALL NETCDF_ERR(ERROR, 'READING zorlw ID' )
ERROR=NF90_GET_VAR(NCID, ID_VAR, dummy)
CALL NETCDF_ERR(ERROR, 'READING zorlw' )
ZORLO = RESHAPE(DUMMY, (/LENSFC/))
ENDIF

NSST_READ : IF(DO_NSST) THEN

PRINT*
Expand Down

0 comments on commit 4592911

Please sign in to comment.