diff --git a/drivers/wrf/module_sf_noahmpdrv.F b/drivers/wrf/module_sf_noahmpdrv.F index ee4c4b77..b50621c6 100644 --- a/drivers/wrf/module_sf_noahmpdrv.F +++ b/drivers/wrf/module_sf_noahmpdrv.F @@ -51,7 +51,7 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN QDRIPRXY ,QTHROSXY ,QTHRORXY ,& QSNSUBXY ,QSNFROXY ,QSUBCXY ,& QFROCXY ,QEVACXY ,QDEWCXY ,QFRZCXY ,QMELTCXY ,& - QSNBOTXY ,PONDINGXY ,PAHXY ,PAHGXY, PAHVXY, PAHBXY,& + QSNBOTXY ,QMELTXY ,PONDINGXY ,PAHXY ,PAHGXY, PAHVXY, PAHBXY,& FPICEXY,RAINLSM,SNOWLSM,FORCTLSM ,FORCQLSM,FORCPLSM,FORCZLSM,FORCWLSM,& ACC_SSOILXY, ACC_QINSURXY, ACC_QSEVAXY, ACC_ETRANIXY, EFLXBXY, & SOILENERGY, SNOWENERGY, CANHSXY, & @@ -232,7 +232,7 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SNOW ! snow water equivalent [mm] REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SNOWH ! physical snow depth [m] REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CANWAT ! total canopy water + ice [mm] - REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACSNOM ! accumulated snow melt leaving pack + REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACSNOM ! accumulated snow melt (mm) REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACSNOW ! accumulated snow on grid REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: EMISS ! surface bulk emissivity REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: QSFC ! bulk surface specific humidity @@ -341,7 +341,8 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QDEWCXY REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QFRZCXY REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QMELTCXY - REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QSNBOTXY + REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QSNBOTXY !total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s] + REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QMELTXY !snowmelt due to phase change (mm/s) REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: PONDINGXY REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FPICEXY !fraction of ice in precip REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: RAINLSM !rain rate (mm/s) AJN @@ -588,7 +589,8 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN REAL :: FCEV ! canopy evaporation heat (w/m2) [+ to atm] REAL :: FGEV ! ground evaporation heat (w/m2) [+ to atm] REAL :: FCTR ! transpiration heat flux (w/m2) [+ to atm] - REAL :: QSNBOT ! snowmelt out bottom of pack [mm/s] + REAL :: QSNBOT ! total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s] + REAL :: QMELT ! snowmelt due to phase change (mm/s) REAL :: PONDING ! snowmelt with no pack [mm] REAL :: PONDING1 ! snowmelt with no pack [mm] REAL :: PONDING2 ! snowmelt with no pack [mm] @@ -1054,7 +1056,7 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN FSA, FSR, FIRA, FSH, FGEV, SSOIL, & ! OUT : TRAD, ESOIL, RUNSF, RUNSB, SAG, SALB, & ! OUT : QSNBOT,PONDING,PONDING1,PONDING2, T2MB, Q2MB, & ! OUT : - EMISSI, FPICE, CHB2 & ! OUT : + EMISSI, FPICE, CHB2, QMELT & ! OUT : #ifdef WRF_HYDRO , sfcheadrt(i,j) & #endif @@ -1192,7 +1194,7 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN PAHG , PAHB , PAH , LAISUN , LAISHA , RB , & ! OUT : QINTS , QINTR , QDRIPS , QDRIPR , QTHROS , QTHROR , & ! OUT : QSNSUB , QSNFRO , QSUBC , QFROC , QFRZC , QMELTC , & ! OUT : - QEVAC , QDEWC , & ! OUT : + QEVAC , QDEWC , QMELT , & ! OUT : RAININ , SNOWIN , ACC_SSOIL, ACC_QINSUR, ACC_QSEVA , & ! OUT : ACC_ETRANI, HCPCT , EFLXB , CANHS , & ! OUT : ACC_DWATER, ACC_PRCP, ACC_ECAN, ACC_ETRAN, ACC_EDIR & ! INOUT @@ -1237,7 +1239,8 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN SNOWH (I,J) = SNDPTH CANWAT (I,J) = CANLIQ + CANICE ACSNOW (I,J) = ACSNOW(I,J) + PRECIP_IN(I,J) * FPICE - ACSNOM (I,J) = ACSNOM(I,J) + QSNBOT*DT + PONDING + PONDING1 + PONDING2 +! ACSNOM (I,J) = ACSNOM(I,J) + QSNBOT*DT + PONDING + PONDING1 + PONDING2 + ACSNOM (I,J) = ACSNOM(I,J) + QMELT*DT + PONDING + PONDING1 + PONDING2 EMISS (I,J) = EMISSI QSFC (I,J) = QSFC1D @@ -1351,7 +1354,8 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN QFRZCXY (I,J) = QFRZC QMELTCXY (I,J) = QMELTC QSNBOTXY (I,J) = QSNBOT - PONDINGXY (I,J) = PONDING + PONDING1 + PONDING2 + QMELTXY (I,J) = QMELT + PONDINGXY(I,J) = PONDING + PONDING1 + PONDING2 FPICEXY (I,J) = FPICE RAINLSM (I,J) = RAININ SNOWLSM (I,J) = SNOWIN diff --git a/src/module_sf_noahmp_glacier.F b/src/module_sf_noahmp_glacier.F index 89810135..93cf837c 100644 --- a/src/module_sf_noahmp_glacier.F +++ b/src/module_sf_noahmp_glacier.F @@ -112,7 +112,7 @@ SUBROUTINE NOAHMP_GLACIER (& FSA ,FSR ,FIRA ,FSH ,FGEV ,SSOIL , & ! OUT : TRAD ,EDIR ,RUNSRF ,RUNSUB ,SAG ,ALBEDO , & ! OUT : QSNBOT ,PONDING ,PONDING1,PONDING2,T2M ,Q2E , & ! OUT : - EMISSI, FPICE, CH2B & ! OUT : + EMISSI, FPICE, CH2B ,QMELT & ! OUT : #ifdef WRF_HYDRO , sfcheadrt & #endif @@ -182,7 +182,7 @@ SUBROUTINE NOAHMP_GLACIER (& REAL , INTENT(OUT) :: RUNSUB !baseflow (saturation excess) [mm/s] REAL , INTENT(OUT) :: SAG !solar rad absorbed by ground (w/m2) REAL , INTENT(OUT) :: ALBEDO !surface albedo [-] - REAL , INTENT(OUT) :: QSNBOT !snowmelt [mm/s] + REAL , INTENT(OUT) :: QSNBOT !total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s] REAL , INTENT(OUT) :: PONDING!surface ponding [mm] REAL , INTENT(OUT) :: PONDING1!surface ponding [mm] REAL , INTENT(OUT) :: PONDING2!surface ponding [mm] @@ -209,7 +209,7 @@ SUBROUTINE NOAHMP_GLACIER (& REAL :: QDEW !ground surface dew rate [mm/s] REAL :: QVAP !ground surface evap. rate [mm/s] REAL :: LATHEA !latent heat [j/kg] - REAL :: QMELT !internal pack melt + REAL, INTENT(OUT) :: QMELT !internal pack melt due to phase change [mm/s] REAL :: SWDOWN !downward solar [w/m2] REAL :: BEG_WB !beginning water for error check REAL :: ZBOT = -8.0 @@ -411,7 +411,7 @@ SUBROUTINE ENERGY_GLACIER (NSNOW ,NSOIL ,ISNOW ,DT ,QSNOW ,RHOAIR , & !i REAL , DIMENSION(-NSNOW+1: 0), INTENT(OUT) :: SNICEV !partial volume ice [m3/m3] REAL , DIMENSION(-NSNOW+1: 0), INTENT(OUT) :: SNLIQV !partial volume liq. water [m3/m3] REAL , DIMENSION(-NSNOW+1: 0), INTENT(OUT) :: EPORE !effective porosity [m3/m3] - REAL , INTENT(OUT) :: QMELT !snowmelt [mm/s] + REAL , INTENT(OUT) :: QMELT !snowmelt due to phase change [mm/s] REAL , INTENT(OUT) :: PONDING!pounding at ground [mm] REAL , INTENT(OUT) :: SAG !solar rad. absorbed by ground (w/m2) REAL , INTENT(OUT) :: FSA !tot. absorbed solar radiation (w/m2) @@ -2036,7 +2036,7 @@ SUBROUTINE WATER_GLACIER (NSNOW ,NSOIL ,IMELT ,DT ,PRCP ,SFCTMP , & !in REAL, INTENT(OUT) :: QSNOW !snow at ground srf (mm/s) [+] REAL, INTENT(OUT) :: PONDING1 REAL, INTENT(OUT) :: PONDING2 - REAL, INTENT(OUT) :: QSNBOT !melting water out of snow bottom [mm/s] + REAL, INTENT(OUT) :: QSNBOT !total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s] REAL, INTENT(OUT) :: FPICE !precipitation frozen fraction ! local @@ -2204,7 +2204,7 @@ SUBROUTINE SNOWWATER_GLACIER (NSNOW ,NSOIL ,IMELT ,DT ,SFCTMP , & !in REAL , INTENT(INOUT) :: FSH !total sensible heat (w/m2) [+ to atm] ! output - REAL, INTENT(OUT) :: QSNBOT !melting water out of snow bottom [mm/s] + REAL, INTENT(OUT) :: QSNBOT !total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s] REAL, INTENT(OUT) :: SNOFLOW!glacier flow [mm] REAL, INTENT(OUT) :: PONDING1 REAL, INTENT(OUT) :: PONDING2 @@ -2829,7 +2829,7 @@ SUBROUTINE SNOWH2O_GLACIER (NSNOW ,NSOIL ,DT ,QSNFRO ,QSNSUB , & !in ! output - REAL, INTENT(OUT) :: QSNBOT !melting water out of snow bottom [mm/s] + REAL, INTENT(OUT) :: QSNBOT !total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s] ! input and output diff --git a/src/module_sf_noahmplsm.F b/src/module_sf_noahmplsm.F index aa9fb0d3..e36602a0 100644 --- a/src/module_sf_noahmplsm.F +++ b/src/module_sf_noahmplsm.F @@ -485,7 +485,7 @@ SUBROUTINE NOAHMP_SFLX (parameters, & PAHG , PAHB , PAH , LAISUN , LAISHA , RB , & ! OUT QINTS , QINTR , QDRIPS , QDRIPR , QTHROS , QTHROR , & ! OUT : QSNSUB , QSNFRO , QSUBC , QFROC , QFRZC , QMELTC , & ! OUT : - QEVAC , QDEWC , & ! OUT + QEVAC , QDEWC , QMELT , & ! OUT RAIN , SNOW , ACC_SSOIL, ACC_QINSUR, ACC_QSEVA , & ! OUT ACC_ETRANI, HCPCT , EFLXB , CANHS , & ! OUT : ACC_DWATER, ACC_PRCP, ACC_ECAN, ACC_ETRAN, ACC_EDIR & ! INOUT @@ -622,7 +622,7 @@ SUBROUTINE NOAHMP_SFLX (parameters, & REAL , INTENT(OUT) :: FVEG !green vegetation fraction [0.0-1.0] REAL , INTENT(OUT) :: ALBEDO !surface albedo [-] REAL :: ERRWAT !water error [kg m{-2}] - REAL , INTENT(OUT) :: QSNBOT !snowmelt out bottom of pack [mm/s] + REAL , INTENT(OUT) :: QSNBOT !total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s] REAL , INTENT(OUT) :: PONDING!surface ponding [mm] REAL , INTENT(OUT) :: PONDING1!surface ponding [mm] REAL , INTENT(OUT) :: PONDING2!surface ponding [mm] @@ -680,7 +680,7 @@ SUBROUTINE NOAHMP_SFLX (parameters, & REAL :: QVAP !ground surface evap. rate [mm/s] REAL :: LATHEA !latent heat [j/kg] REAL :: SWDOWN !downward solar [w/m2] - REAL :: QMELT !snowmelt [mm/s] + REAL,INTENT(OUT) :: QMELT !snowmelt due to phase change [mm/s] REAL :: BEG_WB !water storage at begin of a step [mm] REAL,INTENT(OUT) :: IRC !canopy net LW rad. [w/m2] [+ to atm] REAL,INTENT(OUT) :: IRG !ground net LW rad. [w/m2] [+ to atm] @@ -5658,7 +5658,7 @@ SUBROUTINE PHASECHANGE (parameters,NSNOW ,NSOIL ,ISNOW ,DT ,FACT , SUPERCOOL(J) = 0.0 END DO - DO J = ISNOW+1,0 ! all layers + DO J = ISNOW+1,0 ! snow layers MICE(J) = SNICE(J) MLIQ(J) = SNLIQ(J) END DO @@ -5699,7 +5699,7 @@ SUBROUTINE PHASECHANGE (parameters,NSNOW ,NSOIL ,ISNOW ,DT ,FACT , IF (MICE(J) > 0.0 .AND. STC(J) >= TFRZ) THEN !melting IMELT(J) = 1 ENDIF - IF (MLIQ(J) > SUPERCOOL(J) .AND. STC(J) < TFRZ) THEN + IF (MLIQ(J) > SUPERCOOL(J) .AND. STC(J) < TFRZ) THEN !refreezing IMELT(J) = 2 ENDIF @@ -6052,7 +6052,7 @@ SUBROUTINE WATER (parameters,VEGTYP ,NSNOW ,NSOIL ,IMELT ,DT ,UU , & REAL, INTENT(OUT) :: QDIS !groundwater discharge [mm/s] REAL, INTENT(OUT) :: PONDING1 REAL, INTENT(OUT) :: PONDING2 - REAL, INTENT(OUT) :: QSNBOT !melting water out of snow bottom [mm/s] + REAL, INTENT(OUT) :: QSNBOT !total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s] REAL , INTENT(IN) :: LATHEAV !latent heat vap./sublimation (j/kg) REAL , INTENT(IN) :: LATHEAG !latent heat vap./sublimation (j/kg) LOGICAL , INTENT(IN) :: FROZEN_GROUND ! used to define latent heat pathway @@ -6433,7 +6433,7 @@ SUBROUTINE SNOWWATER (parameters,NSNOW ,NSOIL ,IMELT ,DT ,ZSOIL , & !in REAL, DIMENSION(-NSNOW+1:NSOIL), INTENT(INOUT) :: DZSNSO !snow/soil layer thickness [m] ! output - REAL, INTENT(OUT) :: QSNBOT !melting water out of snow bottom [mm/s] + REAL, INTENT(OUT) :: QSNBOT !total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s] REAL, INTENT(OUT) :: SNOFLOW!glacier flow [mm] REAL, INTENT(OUT) :: PONDING1 REAL, INTENT(OUT) :: PONDING2 @@ -7106,7 +7106,7 @@ SUBROUTINE SNOWH2O (parameters,NSNOW ,NSOIL ,DT ,QSNFRO ,QSNSUB , & !in ! output - REAL, INTENT(OUT) :: QSNBOT !melting water out of snow bottom [mm/s] + REAL, INTENT(OUT) :: QSNBOT !total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s] ! input and output