Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions drivers/wrf/module_sf_noahmpdrv.F
Original file line number Diff line number Diff line change
Expand Up @@ -646,8 +646,7 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN
calculate_soil = .false.
soil_update_steps = nint(soiltstep/DT) ! 3600 = 1 hour
soil_update_steps = max(soil_update_steps,1)
if( soil_update_steps == 1 .or. &
(soil_update_steps > 1 .and. mod(itimestep,soil_update_steps) == 1) ) then
if ( soil_update_steps == 1 ) then
ACC_SSOILXY = 0.0
ACC_QINSURXY = 0.0
ACC_QSEVAXY = 0.0
Expand All @@ -658,6 +657,19 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN
ACC_ETRANXY = 0.0
ACC_EDIRXY = 0.0
end if
if ( soil_update_steps > 1 ) then
if ( mod(itimestep,soil_update_steps) == 1 ) then
ACC_SSOILXY = 0.0
ACC_QINSURXY = 0.0
ACC_QSEVAXY = 0.0
ACC_ETRANIXY = 0.0
ACC_DWATERXY = 0.0
ACC_PRCPXY = 0.0
ACC_ECANXY = 0.0
ACC_ETRANXY = 0.0
ACC_EDIRXY = 0.0
end if
end if

if (mod(itimestep,soil_update_steps) == 0) calculate_soil = .true.
! end soil timestep
Expand Down
18 changes: 11 additions & 7 deletions src/module_sf_noahmplsm.F
Original file line number Diff line number Diff line change
Expand Up @@ -925,7 +925,7 @@ SUBROUTINE NOAHMP_SFLX (parameters, &

! call sprinkler irrigation before CANWAT/PRECIP_HEAT to have canopy interception
IF((CROPLU .EQV. .TRUE.) .AND. (IRAMTSI .GT. 0.0)) THEN
CALL SPRINKLER_IRRIGATION(parameters,NSOIL,DT,SH2O,SMC,SICE,& !in
CALL SPRINKLER_IRRIGATION(parameters,NSOIL,DT,SH2O,SMC, & !in
SFCTMP,UU,VV,EAIR,SIFAC, & !in
IRAMTSI,IREVPLOS,IRSIRATE) !inout
RAIN = RAIN + (IRSIRATE*1000.0/DT) ![mm/s]
Expand Down Expand Up @@ -8493,7 +8493,7 @@ SUBROUTINE SMITH_PARLANGE_INFIL(parameters,NSOIL,ZSOIL,SMC,SICE,QINSUR,FACC,FSUR
CALL WDFCND2 (parameters,WDF,WCND,parameters%SMCWLT(ISOIL),0.0,ISOIL)

! Maximum infiltrability based on the Eq. 6.25. (m/s)
JJ = parameters%GDVIC * (parameters%SMCMAX(ISOIL) - parameters%SMCWLT(ISOIL)) * -1.0 * ZSOIL(ISOIL)
JJ = parameters%GDVIC * (parameters%SMCMAX(ISOIL) - parameters%SMCWLT(ISOIL)) * (-1.0) * ZSOIL(ISOIL)
FSUR = parameters%DKSAT(ISOIL) + (GAM * (parameters%DKSAT(ISOIL) - WCND) / (EXP(GAM * FACC / JJ) -1.0))

! infiltration rate at surface
Expand All @@ -8510,7 +8510,7 @@ SUBROUTINE SMITH_PARLANGE_INFIL(parameters,NSOIL,ZSOIL,SMC,SICE,QINSUR,FACC,FSUR
CALL WDFCND2 (parameters,WDF,WCND,SMC(ISOIL),SICE(ISOIL),ISOIL)

! Maximum infiltrability based on the Eq. 6.25. (m/s)
JJ = parameters%GDVIC * max(0.0,(parameters%SMCMAX(ISOIL) - SMC(ISOIL))) * -1.0 * ZSOIL(ISOIL)
JJ = parameters%GDVIC * max(0.0,(parameters%SMCMAX(ISOIL) - SMC(ISOIL))) * (-1.0) * ZSOIL(ISOIL)

IF(JJ == 0.0)THEN ! infiltration at surface == saturated hydraulic conductivity
FSUR = WCND
Expand Down Expand Up @@ -8571,7 +8571,7 @@ SUBROUTINE GREEN_AMPT_INFIL(parameters,NSOIL,ZSOIL,SMC,SICE,QINSUR,FACC,FSUR,INF
CALL WDFCND2 (parameters,WDF,WCND,parameters%SMCWLT(ISOIL),0.0,ISOIL)

! Maximum infiltrability based on the Eq. 6.25. (m/s)
JJ = parameters%GDVIC * (parameters%SMCMAX(ISOIL) - parameters%SMCWLT(ISOIL)) * -1.0 * ZSOIL(ISOIL)
JJ = parameters%GDVIC * (parameters%SMCMAX(ISOIL) - parameters%SMCWLT(ISOIL)) * (-1.0) * ZSOIL(ISOIL)
FSUR = parameters%DKSAT(ISOIL) + ((JJ/1E-05) * (parameters%DKSAT(ISOIL) - WCND))

!maximum infiltration rate at surface
Expand All @@ -8583,7 +8583,7 @@ SUBROUTINE GREEN_AMPT_INFIL(parameters,NSOIL,ZSOIL,SMC,SICE,QINSUR,FACC,FSUR,INF
CALL WDFCND2 (parameters,WDF,WCND,SMC(ISOIL),SICE(ISOIL),ISOIL)

! Maximum infiltrability based on the Eq. 6.25. (m/s)
JJ = parameters%GDVIC * max(0.0,(parameters%SMCMAX(ISOIL) - SMC(ISOIL))) * -1.0 * ZSOIL(ISOIL)
JJ = parameters%GDVIC * max(0.0,(parameters%SMCMAX(ISOIL) - SMC(ISOIL))) * (-1.0) * ZSOIL(ISOIL)
FSUR = parameters%DKSAT(ISOIL) + ((JJ/FACC) * (parameters%DKSAT(ISOIL) - WCND))

! infiltration rate at surface
Expand Down Expand Up @@ -9349,7 +9349,7 @@ END SUBROUTINE TRIGGER_IRRIGATION

!============================================================================================================

SUBROUTINE SPRINKLER_IRRIGATION(parameters,NSOIL,DT,SH2O,SMC,SICE,& !in
SUBROUTINE SPRINKLER_IRRIGATION(parameters,NSOIL,DT,SH2O,SMC, & !in
T2,WINDU,WINDV,EAIR,SIFAC, & !in
IRAMTSI,IREVPLOS,IRSIRATE) !inout
!---------------------------------------------------------------------------------------------
Expand All @@ -9369,7 +9369,6 @@ SUBROUTINE SPRINKLER_IRRIGATION(parameters,NSOIL,DT,SH2O,SMC,SICE,& !in
REAL, INTENT(IN) :: DT
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SH2O
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SMC
REAL, DIMENSION(1:NSOIL), INTENT(IN) :: SICE
REAL, INTENT(IN) :: T2
REAL, INTENT(IN) :: WINDU
REAL, INTENT(IN) :: WINDV
Expand All @@ -9380,12 +9379,17 @@ SUBROUTINE SPRINKLER_IRRIGATION(parameters,NSOIL,DT,SH2O,SMC,SICE,& !in
REAL, INTENT(INOUT) :: IREVPLOS !loss of irrigation water to evaporation,sprinkler [m/timestep]
REAL, INTENT(INOUT) :: IRSIRATE !rate of irrigation by sprinkler [m/timestep]
! local
REAL, DIMENSION(1:NSOIL) :: SICE
REAL :: FSUR !infiltration rate [m/s]
REAL :: TEMP_RATE
REAL :: WINDSPEED
REAL :: IRRLOSS !temporary var for irr loss [%]
REAL :: ESAT1
!-------------------------------------------------------------------------------------------

! compute soil ice content
SICE(:) = MAX(0.0, SMC(:) - SH2O(:))

! estimate infiltration rate based on Philips Eq.
CALL IRR_PHILIP_INFIL(parameters,SMC,SH2O,SICE,DT,NSOIL,FSUR)
! irrigation rate of sprinkler
Expand Down