diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 index a76a354e6..035e542dd 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 @@ -449,7 +449,8 @@ subroutine noahmp_sflx (parameters, & ghb , irg , irc , irb , tr , evc , & ! out : chleaf , chuc , chv2 , chb2 , fpice , pahv , & pahg , pahb , pah , esnow , canhs , laisun , & - laisha , rb , qsfcveg , qsfcbare & + laisha , rb , qsfcveg , qsfcbare, & + sfcheadrt & #ifdef CCPP ,errmsg, errflg) #else @@ -612,6 +613,7 @@ subroutine noahmp_sflx (parameters, & real (kind=kind_phys), intent(out) :: tgb real (kind=kind_phys) :: q1 real (kind=kind_phys), intent(out) :: emissi + real (kind=kind_phys) , intent(in) :: sfcheadrt !< surface head (mm) !jref:end #ifdef CCPP character(len=*), intent(inout) :: errmsg @@ -884,7 +886,8 @@ subroutine noahmp_sflx (parameters, & smcwtd ,deeprech,rech , & !inout cmc ,ecan ,etran ,fwet ,runsrf ,runsub , & !out qin ,qdis ,ponding1 ,ponding2,& - qsnbot ,esnow ) !out + qsnbot ,esnow, & !out + sfcheadrt) !in ! write(*,'(a20,10f15.5)') 'sflx:runoff=',runsrf*dt,runsub*dt,edir*dt @@ -7025,7 +7028,8 @@ subroutine water (parameters,vegtyp ,nsnow ,nsoil ,imelt ,dt ,uu , & smcwtd ,deeprech,rech , & !inout cmc ,ecan ,etran ,fwet ,runsrf ,runsub , & !out qin ,qdis ,ponding1 ,ponding2, & - qsnbot ,esnow) + qsnbot ,esnow, & + sfcheadrt) !in ! ---------------------------------------------------------------------- ! code history: ! initial code: guo-yue niu, oct. 2007 @@ -7110,6 +7114,8 @@ subroutine water (parameters,vegtyp ,nsnow ,nsoil ,imelt ,dt ,uu , & real (kind=kind_phys) , intent(in) :: latheag !< latent heat vap./sublimation (j/kg) logical , intent(in) :: frozen_ground !< used to define latent heat pathway logical , intent(in) :: frozen_canopy !< used to define latent heat pathway +! hydro coupling + real (kind=kind_phys) , intent(in) :: sfcheadrt !surface head (mm) ! local @@ -7196,6 +7202,7 @@ subroutine water (parameters,vegtyp ,nsnow ,nsoil ,imelt ,dt ,uu , & etrani(iz) = etran * btrani(iz) * 0.001 enddo + qinsur = qinsur+((sfcheadrt/dt)*0.001) !sfcheadrt (mm -> m/s) ! lake/soil water balances diff --git a/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 b/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 index d4971efd9..205f3ba75 100644 --- a/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 +++ b/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 @@ -490,7 +490,9 @@ subroutine noahmpdrv_run & precip_adv_heat_grd_v_ccpp, & precip_adv_heat_grd_b_ccpp, & spec_humid_sfc_veg_ccpp, & - spec_humid_sfc_bare_ccpp & + spec_humid_sfc_bare_ccpp, & +! --- hydro: + sfcheadrt, infxsrt, soldrain & ) use machine , only : kind_phys @@ -695,6 +697,9 @@ subroutine noahmpdrv_run & real(kind=kind_phys), dimension(:) , intent(out) :: ztmax ! thermal roughness length real(kind=kind_phys), dimension(:) , intent(out), optional :: rca ! total canopy/stomatal resistance (s/m) + real(kind=kind_phys), dimension(:) , intent(in) :: sfcheadrt ! surface head [mm] + real(kind=kind_phys), dimension(:) , intent(out) :: infxsrt ! infiltration excess [mm] + real(kind=kind_phys), dimension(:) , intent(out) :: soldrain ! soil drainage [mm] character(len=*) , intent(out) :: errmsg integer , intent(out) :: errflg @@ -795,6 +800,7 @@ subroutine noahmpdrv_run & real (kind=kind_phys) :: o2_air ! in | atmospheric o2 concentration [Pa] real (kind=kind_phys) :: foliage_nitrogen ! in | foliage nitrogen [%] [1-saturated] real (kind=kind_phys), dimension(-nsnow+1: 0) :: snow_ice_frac_old ! in | snow ice fraction at last timestep [-] + real (kind=kind_phys) :: surface_head ! in | surface head [mm] real (kind=kind_phys) :: forcing_height ! inout | forcing height [m] real (kind=kind_phys) :: snow_albedo_old ! inout | snow albedo at last time step (class option) [-] real (kind=kind_phys) :: snow_water_equiv_old ! inout | snow water equivalent at last time step [mm] @@ -1068,6 +1074,7 @@ subroutine noahmpdrv_run & ! forcing_height = zf(i) + surface_head = sfcheadrt(i) snow_albedo_old = alboldxy(i) snow_water_equiv_old = sneqvoxy(i) temperature_snow_soil(-2: 0) = tsnoxy(i,:) @@ -1317,9 +1324,11 @@ subroutine noahmpdrv_run & lai_sunlit ,lai_shaded ,leaf_air_resistance , & #ifdef CCPP spec_humid_sfc_veg ,spec_humid_sfc_bare , & + surface_head, & errmsg ,errflg ) #else - spec_humid_sfc_veg ,spec_humid_sfc_bare ) + spec_humid_sfc_veg ,spec_humid_sfc_bare, & + surface_head) #endif #ifdef CCPP @@ -1388,6 +1397,8 @@ subroutine noahmpdrv_run & edir (i) = evaporation_soil drain (i) = runoff_baseflow runoff (i) = runoff_surface + infxsrt (i) = runoff_surface * timestep + soldrain (i) = max((runoff_baseflow * timestep), 0.0) lfmassxy (i) = leaf_carbon rtmassxy (i) = root_carbon diff --git a/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta b/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta index 7d1150c80..6ea060da0 100644 --- a/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta +++ b/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta @@ -1638,6 +1638,30 @@ kind = kind_phys intent = out optional = True +[sfcheadrt] + standard_name = surface_water_depth + long_name = surface water depth + units = mm + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[infxsrt] + standard_name = time_step_infiltration_excess + long_name = time step infiltration excess + units = mm + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out +[soldrain] + standard_name = soil_column_drainage + long_name = soil column drainage + units = mm + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP