From 17477641d02f349da329cf88632526e5714bd4e3 Mon Sep 17 00:00:00 2001 From: Chenghao Wang <49321740+chenghaow@users.noreply.github.com> Date: Wed, 14 Jan 2026 16:06:46 -0600 Subject: [PATCH] Update Noah-MP driver with new variables Update driver with new WRF-urban-nbs related variables --- drivers/wrf/module_sf_noahmpdrv.F | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/wrf/module_sf_noahmpdrv.F b/drivers/wrf/module_sf_noahmpdrv.F index 2ae3999b..cdd4a74b 100644 --- a/drivers/wrf/module_sf_noahmpdrv.F +++ b/drivers/wrf/module_sf_noahmpdrv.F @@ -3017,6 +3017,8 @@ SUBROUTINE noahmp_urban(sf_urban_physics, NSOIL, IVGTYP, ITIMESTEP, cmcr_urb2d, tgr_urb2d, tgrl_urb3d, smr_urb3d, & !H urban drelr_urb2d, drelb_urb2d, drelg_urb2d, & !H urban flxhumr_urb2d, flxhumb_urb2d, flxhumg_urb2d, & !H urban + tvg_urb2d, xxxvg_urb2d, tvgl_urb3d, smg_urb3d, tt_urb2d, & !H urban (added by Chenghao Wang) + cmcg_urb2d, flxhumvg_urb2d, flxhumt_urb2d, & !H urban (added by Chenghao Wang) julian, julyr, & !H urban frc_urb2d, utype_urb2d, & !I urban chs, chs2, cqs2, & !H @@ -3158,11 +3160,19 @@ SUBROUTINE noahmp_urban(sf_urban_physics, NSOIL, IVGTYP, ITIMESTEP, REAL :: FLXHUMR_URB REAL :: FLXHUMB_URB REAL :: FLXHUMG_URB + REAL :: TVG_URB ! added by Chenghao Wang + REAL :: TT_URB ! added by Chenghao Wang + REAL :: XXXVG_URB ! added by Chenghao Wang + REAL :: CMCG_URB ! added by Chenghao Wang + REAL :: FLXHUMVG_URB ! added by Chenghao Wang + REAL :: FLXHUMT_URB ! added by Chenghao Wang REAL :: CMCR_URB REAL :: TGR_URB REAL, DIMENSION(1:num_roof_layers) :: SMR_URB ! green roof layer moisture REAL, DIMENSION(1:num_roof_layers) :: TGRL_URB ! green roof layer temp [K] + REAL, DIMENSION(1:num_road_layers) :: TVGL_URB ! vegetated ground layer temp [K] (added by Chenghao Wang) + REAL, DIMENSION(1:num_road_layers) :: SMG_URB ! vegetated ground layer moisture (added by Chenghao Wang) REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: DRELR_URB2D REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: DRELB_URB2D @@ -3170,11 +3180,19 @@ SUBROUTINE noahmp_urban(sf_urban_physics, NSOIL, IVGTYP, ITIMESTEP, REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: FLXHUMR_URB2D REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: FLXHUMB_URB2D REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: FLXHUMG_URB2D + REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TVG_URB2D ! added by Chenghao Wang + REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TT_URB2D ! added by Chenghao Wang + REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XXXVG_URB2D ! added by Chenghao Wang + REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CMCG_URB2D ! added by Chenghao Wang + REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: FLXHUMVG_URB2D ! added by Chenghao Wang + REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: FLXHUMT_URB2D ! added by Chenghao Wang REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CMCR_URB2D REAL, OPTIONAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TGR_URB2D REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_roof_layers, jms:jme ), INTENT(INOUT) :: TGRL_URB3D REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_roof_layers, jms:jme ), INTENT(INOUT) :: SMR_URB3D + REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_road_layers, jms:jme ), INTENT(INOUT) :: TVGL_URB3D ! added by Chenghao Wang + REAL, OPTIONAL, DIMENSION( ims:ime, 1:num_road_layers, jms:jme ), INTENT(INOUT) :: SMG_URB3D ! added by Chenghao Wang ! state variable surface_driver <--> lsm <--> urban @@ -3422,6 +3440,12 @@ SUBROUTINE noahmp_urban(sf_urban_physics, NSOIL, IVGTYP, ITIMESTEP, FLXHUMR_URB = FLXHUMR_URB2D(I,J) FLXHUMB_URB = FLXHUMB_URB2D(I,J) FLXHUMG_URB = FLXHUMG_URB2D(I,J) + TVG_URB = TVG_URB2D(I,J) ! added by Chenghao Wang + TT_URB = TT_URB2D(I,J) ! added by Chenghao Wang + XXXVG_URB = XXXVG_URB2D(I,J) ! added by Chenghao Wang + CMCG_URB = CMCG_URB2D(I,J) ! added by Chenghao Wang + FLXHUMVG_URB = FLXHUMVG_URB2D(I,J)! added by Chenghao Wang + FLXHUMT_URB = FLXHUMT_URB2D(I,J) ! added by Chenghao Wang DRELR_URB = DRELR_URB2D(I,J) DRELB_URB = DRELB_URB2D(I,J) DRELG_URB = DRELG_URB2D(I,J) @@ -3438,6 +3462,8 @@ SUBROUTINE noahmp_urban(sf_urban_physics, NSOIL, IVGTYP, ITIMESTEP, DO K = 1,num_road_layers TGL_URB(K) = TGL_URB3D(I,K,J) + TVGL_URB(K) = TVGL_URB3D(I,K,J) ! added by Chenghao Wang + SMG_URB(K) = SMG_URB3D(I,K,J) ! added by Chenghao Wang END DO XXXR_URB = XXXR_URB2D(I,J) @@ -3513,6 +3539,7 @@ SUBROUTINE noahmp_urban(sf_urban_physics, NSOIL, IVGTYP, ITIMESTEP, TGRL_URB, SMR_URB, CMGR_URB, CHGR_URB, jmonth, & ! H DRELR_URB, DRELB_URB, & ! H DRELG_URB,FLXHUMR_URB,FLXHUMB_URB,FLXHUMG_URB, & + TVG_URB,TT_URB,XXXVG_URB,TVGL_URB,SMG_URB,CMCG_URB,FLXHUMVG_URB,FLXHUMT_URB, & ! added by Chenghao Wang lf_urb_s, z0_urb, vegfrac) TS_URB2D(I,J) = TS_URB @@ -3547,6 +3574,12 @@ SUBROUTINE noahmp_urban(sf_urban_physics, NSOIL, IVGTYP, ITIMESTEP, FLXHUMR_URB2D(I,J) = FLXHUMR_URB FLXHUMB_URB2D(I,J) = FLXHUMB_URB FLXHUMG_URB2D(I,J) = FLXHUMG_URB + TVG_URB2D(I,J) = TVG_URB ! added by Chenghao Wang + TT_URB2D(I,J) = TT_URB ! added by Chenghao Wang + XXXVG_URB2D(I,J) = XXXVG_URB ! added by Chenghao Wang + CMCG_URB2D(I,J) = CMCG_URB ! added by Chenghao Wang + FLXHUMVG_URB2D(I,J) = FLXHUMVG_URB! added by Chenghao Wang + FLXHUMT_URB2D(I,J) = FLXHUMT_URB ! added by Chenghao Wang DRELR_URB2D(I,J) = DRELR_URB DRELB_URB2D(I,J) = DRELB_URB DRELG_URB2D(I,J) = DRELG_URB @@ -3561,6 +3594,8 @@ SUBROUTINE noahmp_urban(sf_urban_physics, NSOIL, IVGTYP, ITIMESTEP, END DO DO K = 1,num_road_layers TGL_URB3D(I,K,J) = TGL_URB(K) + TVGL_URB3D(I,K,J) = TVGL_URB(K) ! added by Chenghao Wang + SMG_URB3D(I,K,J) = SMG_URB(K) ! added by Chenghao Wang END DO XXXR_URB2D(I,J) = XXXR_URB