Skip to content

Commit

Permalink
Determine whether to process noah or noah-mp based on
Browse files Browse the repository at this point in the history
the records in the input file.

Fixes ufs-community#761.
  • Loading branch information
GeorgeGayno-NOAA committed Feb 2, 2023
1 parent 7df8ccc commit 228cb2b
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 12 deletions.
28 changes: 18 additions & 10 deletions sorc/global_cycle.fd/cycle.f90
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,8 @@ SUBROUTINE SFCDRV(LUGB, IDIM,JDIM,LSM,LENSFC,LSOIL,DELTSFC, &
INTEGER :: IDUM(IDIM,JDIM)
integer :: num_parthds, num_threads

LOGICAL :: IS_NOAHMP=.FALSE.

real(kind=kind_io8) :: min_ice(lensfc)

REAL :: SLMASK(LENSFC), OROG(LENSFC)
Expand Down Expand Up @@ -475,7 +477,8 @@ SUBROUTINE SFCDRV(LUGB, IDIM,JDIM,LSM,LENSFC,LSOIL,DELTSFC, &
! READ THE INPUT SURFACE DATA ON THE CUBED-SPHERE TILE.
!--------------------------------------------------------------------------------

CALL READ_DATA(LSOIL,LENSFC,DO_NSST,.false.,TSFFCS=TSFFCS,SMCFCS=SMCFCS, &
CALL READ_DATA(LSOIL,LENSFC,DO_NSST,.false.,IS_NOAHMP=IS_NOAHMP, &
TSFFCS=TSFFCS,SMCFCS=SMCFCS, &
SWEFCS=SWEFCS,STCFCS=STCFCS,TG3FCS=TG3FCS,ZORFCS=ZORFCS, &
CVFCS=CVFCS, CVBFCS=CVBFCS,CVTFCS=CVTFCS,ALBFCS=ALBFCS, &
VEGFCS=VEGFCS,SLIFCS=SLIFCS,CNPFCS=CNPFCS,F10M=F10M , &
Expand Down Expand Up @@ -712,16 +715,21 @@ SUBROUTINE SFCDRV(LUGB, IDIM,JDIM,LSM,LENSFC,LSOIL,DELTSFC, &
! WRITE OUT UPDATED SURFACE DATA ON THE CUBED-SPHERE TILE.
!--------------------------------------------------------------------------------

CALL WRITE_DATA_SELECTED_RECORDS(VEGFCS,LENSFC,IDIM,JDIM)
IF (IS_NOAHMP) THEN

CALL WRITE_DATA_SELECTED_RECORDS(VEGFCS,LENSFC,IDIM,JDIM)

!CALL WRITE_DATA(SLIFCS,TSFFCS,SWEFCS,TG3FCS,ZORFCS, &
! ALBFCS,ALFFCS,VEGFCS,CNPFCS,F10M, &
! T2M,Q2M,VETFCS,SOTFCS,USTAR,FMM,FHH, &
! SICFCS,SIHFCS,SITFCS, &
! TPRCP,SRFLAG,SNDFCS, &
! VMNFCS,VMXFCS,SLPFCS,ABSFCS, &
! SLCFCS,SMCFCS,STCFCS, &
! IDIM,JDIM,LENSFC,LSOIL,DO_NSST,NSST)
ELSE

CALL WRITE_DATA(SLIFCS,TSFFCS,SWEFCS,TG3FCS,ZORFCS, &
ALBFCS,ALFFCS,VEGFCS,CNPFCS,F10M, &
T2M,Q2M,VETFCS,SOTFCS,USTAR,FMM,FHH, &
SICFCS,SIHFCS,SITFCS, &
TPRCP,SRFLAG,SNDFCS, &
VMNFCS,VMXFCS,SLPFCS,ABSFCS, &
SLCFCS,SMCFCS,STCFCS, &
IDIM,JDIM,LENSFC,LSOIL,DO_NSST,NSST)
ENDIF

IF (DO_NSST) THEN
DEALLOCATE(NSST%C_0)
Expand Down
21 changes: 19 additions & 2 deletions sorc/global_cycle.fd/read_write_data.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1247,6 +1247,7 @@ END SUBROUTINE READ_GSI_DATA
!! @param[in] DO_NSST When true, nsst fields are read.
!! @param[in] INC_FILE When true, read from an increment file.
!! False reads from a restart file.
!! @param[out] IS_NOAHMP When true, process for the Noah-MP LSM.
!! @param[out] TSFFCS Skin Temperature.
!! @param[out] SMCFCS Total volumetric soil moisture.
!! @param[out] SWEFCS Snow water equivalent.
Expand Down Expand Up @@ -1286,7 +1287,8 @@ END SUBROUTINE READ_GSI_DATA
!! @param[out] ZSOIL Soil layer thickness.
!! @param[out] NSST Data structure containing nsst fields.
!! @author George Gayno NOAA/EMC
SUBROUTINE READ_DATA(LSOIL,LENSFC,DO_NSST,INC_FILE,TSFFCS,SMCFCS,SWEFCS,STCFCS, &
SUBROUTINE READ_DATA(LSOIL,LENSFC,DO_NSST,INC_FILE,IS_NOAHMP, &
TSFFCS,SMCFCS,SWEFCS,STCFCS, &
TG3FCS,ZORFCS, &
CVFCS,CVBFCS,CVTFCS,ALBFCS, &
VEGFCS,SLIFCS,CNPFCS,F10M, &
Expand All @@ -1304,6 +1306,8 @@ SUBROUTINE READ_DATA(LSOIL,LENSFC,DO_NSST,INC_FILE,TSFFCS,SMCFCS,SWEFCS,STCFCS,
INTEGER, INTENT(IN) :: LSOIL, LENSFC
LOGICAL, INTENT(IN) :: DO_NSST, INC_FILE

LOGICAL, OPTIONAL, INTENT(OUT) :: IS_NOAHMP

REAL, OPTIONAL, INTENT(OUT) :: CVFCS(LENSFC), CVBFCS(LENSFC)
REAL, OPTIONAL, INTENT(OUT) :: CVTFCS(LENSFC), ALBFCS(LENSFC,4)
REAL, OPTIONAL, INTENT(OUT) :: SLIFCS(LENSFC), CNPFCS(LENSFC)
Expand All @@ -1330,7 +1334,7 @@ SUBROUTINE READ_DATA(LSOIL,LENSFC,DO_NSST,INC_FILE,TSFFCS,SMCFCS,SWEFCS,STCFCS,
CHARACTER(LEN=50) :: FNBGSI
CHARACTER(LEN=3) :: RANKCH

INTEGER :: ERROR, NCID, MYRANK
INTEGER :: ERROR, ERROR2, NCID, MYRANK
INTEGER :: IDIM, JDIM, ID_DIM
INTEGER :: ID_VAR, IERR

Expand Down Expand Up @@ -1367,6 +1371,19 @@ SUBROUTINE READ_DATA(LSOIL,LENSFC,DO_NSST,INC_FILE,TSFFCS,SMCFCS,SWEFCS,STCFCS,
CALL MPI_ABORT(MPI_COMM_WORLD, 88, IERR)
ENDIF

! Check for records that indicate the restart file is
! for the Noah-MP land surface model.

IF(PRESENT(IS_NOAHMP))THEN
ERROR=NF90_INQ_VARID(NCID, "canliqxy", ID_VAR)
ERROR2=NF90_INQ_VARID(NCID, "tsnoxy", ID_VAR)
IS_NOAHMP=.FALSE.
IF(ERROR == 0 .AND. ERROR2 == 0) THEN
IS_NOAHMP=.TRUE.
print*,"- WILL PROCESS FOR NOAH-MP LSM."
ENDIF
ENDIF

ALLOCATE(DUMMY(IDIM,JDIM))

IF (PRESENT(TSFFCS)) THEN
Expand Down
1 change: 1 addition & 0 deletions ush/global_cycle_driver.sh
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ for n in $(seq 1 $ntiles); do
# Make a copy of the input restart file in the working directory.
# global_cycle will update the required records for noah-mp.
cp $COMIN/$PDY.${cyc}0000.sfc_data.tile${n}.nc $COMOUT/$PDY.${cyc}0000.sfcanl_data.tile${n}.nc
chmod 644 $COMOUT/$PDY.${cyc}0000.sfcanl_data.tile${n}.nc
ln -fs $COMOUT/$PDY.${cyc}0000.sfcanl_data.tile${n}.nc $DATA/fnbgso.00$n

ln -fs $FIXfv3/C${CRES}/C${CRES}_grid.tile${n}.nc $DATA/fngrid.00$n
Expand Down

0 comments on commit 228cb2b

Please sign in to comment.