SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE ROOF_LAYER_E_BUDGET(PT_ROOF, PQSAT_ROOF, PTI_BLD, PAC_BLD, PTSTEP, & 00003 HBLD, PHC_ROOF, PTC_ROOF, PD_ROOF, PDN_ROOF, & 00004 PRHOA, PAC_ROOF, PAC_ROOF_WAT, PLW_RAD, PPS, & 00005 PDELT_ROOF, PTA, PQA, PEXNA, PEXNS, & 00006 PABS_SW_ROOF, PGSNOW_ROOF, PEMIS_ROOF, & 00007 PFLX_BLD_ROOF, PDQS_ROOF, PABS_LW_ROOF, & 00008 PHFREE_ROOF, PLEFREE_ROOF, PIMB_ROOF, & 00009 PFRAC_GR, PG_GREENROOF_ROOF, & 00010 PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, & 00011 PF_FLOOR_ROOF, PRADHT_IN, & 00012 PTS_MASS, PT_WIN2, PTS_FLOOR, PTI_WALL, & 00013 PRAD_ROOF_WALL, PRAD_ROOF_WIN, PRAD_ROOF_FLOOR,& 00014 PRAD_ROOF_MASS, PCONV_ROOF_BLD, PRR, & 00015 PLOAD_IN_ROOF ) 00016 ! ########################################################################## 00017 ! 00018 !!**** *ROOF_LAYER_E_BUDGET* 00019 !! 00020 !! PURPOSE 00021 !! ------- 00022 ! 00023 ! Computes the evoultion of surface temperature of roofs 00024 ! 00025 ! 00026 !!** METHOD 00027 ! ------ 00028 ! 00029 ! 00030 ! 00031 ! 00032 ! 5 : equation for evolution of Ts_roof 00033 ! ********************************* 00034 ! 00035 ! dTt_1(t) / dt = 1/(dt_1*Ct_1) * ( Rn - H - LE 00036 ! - 2*Kt_1*(Tt_1-Tt_2)/(dt_1 +dt_2) ) 00037 ! 00038 ! dTt_k(t) / dt = 1/(dt_k*Ct_k) * (- 2*Kt_k-1*(Tt_k-Tt_k-1)/(dt_k-1 +dt_k) 00039 ! - 2*Kt_k *(Tt_k-Tt_k+1)/(dt_k+1 +dt_k) ) 00040 ! 00041 ! with 00042 ! 00043 ! K*_k = (d*_k+ d*_k+1)/(d*_k/k*_k+ d*_k+1/k*_k+1) 00044 ! 00045 ! Rn = (dir_Rg + sca_Rg) (1-a) + emis * ( Rat - sigma Ts**4 (t+dt) ) 00046 ! 00047 ! H = rho Cp CH V ( Ts (t+dt) - Tas ) 00048 ! 00049 ! LE = rho Lv CH V ( qs (t+dt) - qas ) 00050 ! 00051 ! where the as subscript denotes atmospheric values at ground level 00052 ! (and not at first half level) 00053 ! 00054 ! The tridiagonal systel is linearized with 00055 ! 00056 ! using Ts**4 (t+dt) = Ts**4 (t) + 4*Ts**3 (t) * ( Ts(t+dt) - Ts(t) ) 00057 ! 00058 ! and qs (t+dt) = Hu(t) * qsat(t) + Hu(t) dqsat/dT * ( Ts(t+dt) - Ts(t) ) 00059 ! 00060 ! 00061 ! 00062 !! EXTERNAL 00063 !! -------- 00064 !! 00065 !! 00066 !! IMPLICIT ARGUMENTS 00067 !! ------------------ 00068 !! 00069 !! MODD_CST 00070 !! 00071 !! 00072 !! REFERENCE 00073 !! --------- 00074 !! 00075 !! 00076 !! AUTHOR 00077 !! ------ 00078 !! 00079 !! V. Masson * Meteo-France * 00080 !! 00081 !! MODIFICATIONS 00082 !! ------------- 00083 !! Original 23/01/98 00084 !! 17/10/05 (G. Pigeon) computation of storage inside the roofs 00085 !! 26/04/12 (G. Pigeon) add term of heating of rain (new arg PRR+XCL) 00086 !! 09/12 (G. Pigeon) modif of indoor conv. coef and implicit calculation 00087 !! 10/12 (G. Pigeon) add indoor solar heat load 00088 !------------------------------------------------------------------------------- 00089 ! 00090 !* 0. DECLARATIONS 00091 ! ------------ 00092 ! 00093 USE MODD_CSTS,ONLY : XCPD, XLVTT, XSTEFAN, XCL 00094 ! 00095 USE MODE_THERMOS 00096 ! 00097 USE MODI_LAYER_E_BUDGET 00098 USE MODI_LAYER_E_BUDGET_GET_COEF 00099 USE MODE_CONV_DOE 00100 ! 00101 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00102 USE PARKIND1 ,ONLY : JPRB 00103 ! 00104 IMPLICIT NONE 00105 ! 00106 !* 0.1 declarations of arguments 00107 ! 00108 REAL, DIMENSION(:,:), INTENT(INOUT) :: PT_ROOF ! roof layers temperatures 00109 REAL, DIMENSION(:), INTENT(INOUT) :: PQSAT_ROOF ! q_sat(Ts) 00110 REAL, DIMENSION(:), INTENT(IN) :: PTI_BLD ! inside building temp. 00111 REAL, DIMENSION(:), INTENT(IN) :: PAC_BLD ! aerodynamical resistance 00112 ! inside building itself 00113 REAL, INTENT(IN) :: PTSTEP ! time step 00114 CHARACTER(LEN=3), INTENT(IN) :: HBLD ! Building Energy model 'DEF' or 'BEM' 00115 REAL, DIMENSION(:,:), INTENT(IN) :: PHC_ROOF ! heat capacity for roof layers 00116 REAL, DIMENSION(:,:), INTENT(IN) :: PTC_ROOF ! thermal conductivity for roof layers 00117 REAL, DIMENSION(:,:), INTENT(IN) :: PD_ROOF ! depth of roof layers 00118 REAL, DIMENSION(:), INTENT(IN) :: PDN_ROOF ! roof snow fraction 00119 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! air density 00120 REAL, DIMENSION(:), INTENT(IN) :: PAC_ROOF ! aerodynamical conductance 00121 REAL, DIMENSION(:), INTENT(IN) :: PAC_ROOF_WAT ! aerodynamical conductance (for water) 00122 REAL, DIMENSION(:), INTENT(IN) :: PLW_RAD ! atmospheric infrared radiation 00123 REAL, DIMENSION(:), INTENT(IN) :: PPS ! pressure at the surface 00124 REAL, DIMENSION(:), INTENT(IN) :: PDELT_ROOF ! fraction of water 00125 REAL, DIMENSION(:), INTENT(IN) :: PTA ! air temperature at roof level 00126 REAL, DIMENSION(:), INTENT(IN) :: PQA ! air specific humidity 00127 ! at roof level 00128 REAL, DIMENSION(:), INTENT(IN) :: PEXNA ! exner function 00129 REAL, DIMENSION(:), INTENT(IN) :: PEXNS ! surface exner function 00130 REAL, DIMENSION(:), INTENT(IN) :: PABS_SW_ROOF ! absorbed solar radiation 00131 REAL, DIMENSION(:), INTENT(IN) :: PGSNOW_ROOF ! roof snow conduction 00132 ! ! heat fluxes at mantel 00133 ! ! base 00134 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_ROOF ! roof emissivity 00135 REAL, DIMENSION(:), INTENT(IN) :: PFRAC_GR ! fraction of green roofs 00136 REAL, DIMENSION(:), INTENT(IN) :: PG_GREENROOF_ROOF ! heat conduction flux 00137 ! between greenroof and 00138 ! structural roof 00139 REAL, DIMENSION(:), INTENT(OUT) :: PFLX_BLD_ROOF ! flux from bld to roof 00140 REAL, DIMENSION(:), INTENT(OUT) :: PDQS_ROOF ! heat storage inside the roofs 00141 REAL, DIMENSION(:), INTENT(OUT) :: PABS_LW_ROOF ! absorbed infra-red rad. 00142 REAL, DIMENSION(:), INTENT(OUT) :: PHFREE_ROOF ! sensible heat flux of the 00143 ! snow free part of the roof 00144 REAL, DIMENSION(:), INTENT(OUT) :: PLEFREE_ROOF ! latent heat flux of the 00145 ! snow free part of the roof 00146 REAL, DIMENSION(:), INTENT(OUT) :: PIMB_ROOF ! residual energy imbalance 00147 ! of the roof for 00148 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_MASS ! View factor floor-mass 00149 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_WALL ! View factor floor-wall 00150 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_WIN ! View factor floor-window 00151 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_ROOF ! View factor floor-roof 00152 REAL, DIMENSION(:), INTENT(IN) :: PRADHT_IN ! Indoor radiant heat transfer coefficient 00153 ! [W K-1 m-2] 00154 REAL, DIMENSION(:), INTENT(IN) :: PTS_MASS ! surf. mass temp. (contact with bld air) 00155 REAL, DIMENSION(:), INTENT(IN) :: PT_WIN2 ! indoor wind. temp. 00156 REAL, DIMENSION(:), INTENT(IN) :: PTS_FLOOR ! surf. floor temp. (contact with bld air) 00157 REAL, DIMENSION(:), INTENT(IN) :: PTI_WALL ! indoor wall temp. 00158 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_ROOF_WALL ! rad. fluxes from roof to wall [W m-2(roof)] 00159 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_ROOF_WIN ! rad. fluxes from roof to win [W m-2(roof)] 00160 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_ROOF_FLOOR! rad. fluxes from roof to floor [W m-2(roof)] 00161 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_ROOF_MASS ! rad. fluxes from roof to mass [W m-2(roof)] 00162 REAL, DIMENSION(:), INTENT(OUT) :: PCONV_ROOF_BLD ! conv. fluxes from roof to bld [W m-2(roof)] 00163 REAL, DIMENSION(:), INTENT(IN) :: PRR ! rain rate [kg m-2 s-1] 00164 REAL, DIMENSION(:), INTENT(IN) :: PLOAD_IN_ROOF ! solar + int heat gain on roof W/m² [roof] 00165 ! 00166 !* 0.2 declarations of local variables 00167 ! 00168 REAL :: ZIMPL = 1.0 ! implicit coefficient 00169 REAL :: ZEXPL = 0.0 ! explicit coefficient 00170 ! 00171 REAL, DIMENSION(SIZE(PTA)) :: ZDF_ROOF ! snow-free fraction 00172 REAL, DIMENSION(SIZE(PTA),SIZE(PT_ROOF,2)) :: ZA, ! lower diag. 00173 ZB, ! main diag. 00174 ZC, ! upper diag. 00175 ZY ! r.h.s. 00176 ! 00177 REAL, DIMENSION(SIZE(PTA)) :: ZDQSAT_ROOF ! dq_sat/dTs 00178 REAL, DIMENSION(SIZE(PTA)) :: ZRHO_ACF_ROOF ! conductance * rho 00179 REAL, DIMENSION(SIZE(PTA)) :: ZRHO_ACF_ROOF_WAT! conductance * rho (for water) 00180 REAL, DIMENSION(SIZE(PTA)) :: ZMTC_O_D_ROOF_IN ! thermal capacity times layer depth 00181 REAL, DIMENSION(SIZE(PTA)) :: ZTS_ROOF ! roof surface temperature at previous time step 00182 REAL, DIMENSION(SIZE(PTA)) :: ZTRAD_ROOF ! roof radiative surface temperature at intermediate time step 00183 REAL, DIMENSION(SIZE(PTA)) :: ZTAER_ROOF ! roof aerodyn. surface temperature at intermediate time step 00184 REAL, DIMENSION(SIZE(PTA)) :: ZHEAT_RR ! heat used too cool/heat the rain from the roof 00185 REAL, DIMENSION(SIZE(PTA)) :: ZTI_ROOF ! temperature of internal roof layer used for radiative exchanges 00186 REAL, DIMENSION(SIZE(PTA)) :: ZTI_ROOF_CONV ! temperature of internal roof layer used for convective exchanges 00187 REAL, DIMENSION(SIZE(PTA)) :: ZCHTC_IN_ROOF ! Indoor roof convec heat transfer coefficient 00188 ! [W K-1 m-2(bld)] 00189 ! 00190 INTEGER :: JJ 00191 INTEGER :: IROOF_LAYER ! number of roof layers 00192 INTEGER :: JLAYER ! loop counter 00193 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00194 !------------------------------------------------------------------------------- 00195 ! 00196 IF (LHOOK) CALL DR_HOOK('ROOF_LAYER_E_BUDGET',0,ZHOOK_HANDLE) 00197 ! 00198 ! *Convection heat transfer coefficients [W m-2 K-1] from EP Engineering Reference 00199 ! 00200 IROOF_LAYER = SIZE(PT_ROOF,2) 00201 ! 00202 ZCHTC_IN_ROOF(:) = CHTC_DOWN_DOE(PT_ROOF(:,IROOF_LAYER), PTI_BLD(:)) 00203 DO JJ=1,SIZE(ZCHTC_IN_ROOF) 00204 ZCHTC_IN_ROOF(JJ) = MAX(1., ZCHTC_IN_ROOF(JJ)) 00205 ENDDO 00206 ! 00207 CALL LAYER_E_BUDGET_GET_COEF( PT_ROOF, PTSTEP, ZIMPL, PHC_ROOF, PTC_ROOF, PD_ROOF, & 00208 ZA, ZB, ZC, ZY ) 00209 ! 00210 ! 00211 DO JJ=1,SIZE(PDN_ROOF) 00212 ! 00213 ZDF_ROOF(JJ) = 1. - PDN_ROOF(JJ) 00214 ! 00215 ZTS_ROOF(JJ) = PT_ROOF(JJ,1) 00216 ZTI_ROOF(JJ) = PT_ROOF(JJ,IROOF_LAYER) 00217 ! 00218 !* 2. Roof Ts coefficients 00219 ! -------------------- 00220 ! 00221 ZRHO_ACF_ROOF (JJ) = PRHOA(JJ) * PAC_ROOF (JJ) 00222 ZRHO_ACF_ROOF_WAT(JJ) = PRHOA(JJ) * PAC_ROOF_WAT(JJ) 00223 ! 00224 IF (HBLD .EQ. 'DEF') THEN 00225 ZMTC_O_D_ROOF_IN(JJ) = 2. * PTC_ROOF(JJ,IROOF_LAYER) / PD_ROOF (JJ,IROOF_LAYER) 00226 ZMTC_O_D_ROOF_IN(JJ) = 1./( 1./ZMTC_O_D_ROOF_IN(JJ) + 1./(XCPD*PRHOA(JJ)*PAC_BLD(JJ)) ) 00227 ENDIF 00228 ! 00229 ENDDO 00230 ! 00231 !* 2.1 dqsat/dTs, and humidity for roofs 00232 ! --------------------------------- 00233 ! 00234 ZDQSAT_ROOF(:) = DQSAT(ZTS_ROOF(:),PPS(:),PQSAT_ROOF(:)) 00235 ! 00236 !* 2.2 coefficients 00237 ! ------------ 00238 ! 00239 DO JJ=1,SIZE(PT_ROOF,1) 00240 ! 00241 ZB(JJ,1) = ZB(JJ,1) + ZDF_ROOF(JJ) * (1.-PFRAC_GR(JJ)) * ( & 00242 ZIMPL * ( XCPD/PEXNS(JJ) * ZRHO_ACF_ROOF(JJ) & 00243 + XLVTT * ZRHO_ACF_ROOF_WAT(JJ) * PDELT_ROOF(JJ) * ZDQSAT_ROOF(JJ) & 00244 + XSTEFAN * PEMIS_ROOF(JJ) * 4.*ZTS_ROOF(JJ)**3 & 00245 + PRR(JJ) * XCL )) !! heating/cooling of rain 00246 ! 00247 ZY(JJ,1) = ZY(JJ,1) + (1.-PFRAC_GR(JJ)) & 00248 * (PDN_ROOF(JJ)*PGSNOW_ROOF(JJ) + ZDF_ROOF(JJ) * ( PABS_SW_ROOF(JJ) & 00249 + XCPD * ZRHO_ACF_ROOF(JJ) * ( PTA(JJ)/PEXNA(JJ) - ZEXPL*ZTS_ROOF(JJ)/PEXNS(JJ)) & 00250 + PEMIS_ROOF(JJ)*PLW_RAD(JJ) & 00251 + XLVTT * ZRHO_ACF_ROOF_WAT(JJ) * PDELT_ROOF(JJ) & 00252 * ( PQA(JJ) - PQSAT_ROOF(JJ) + ZIMPL * ZDQSAT_ROOF(JJ) * ZTS_ROOF(JJ) ) & 00253 + XSTEFAN * PEMIS_ROOF(JJ) * ZTS_ROOF(JJ)**4 * ( 3.*ZIMPL-ZEXPL ) & 00254 + PRR(JJ) * XCL * (PTA(JJ) - ZEXPL * ZTS_ROOF(JJ)) ) ) & !! heating/cooling of rain 00255 + PFRAC_GR(JJ)*PG_GREENROOF_ROOF(JJ) 00256 ! 00257 IF (HBLD=="DEF") THEN 00258 ! 00259 ZB(JJ,IROOF_LAYER) = ZB(JJ,IROOF_LAYER) + ZIMPL * ZMTC_O_D_ROOF_IN(JJ) 00260 ! 00261 ZY(JJ,IROOF_LAYER) = ZY(JJ,IROOF_LAYER) & 00262 + ZMTC_O_D_ROOF_IN(JJ) * PTI_BLD(JJ) & 00263 - ZEXPL * ZMTC_O_D_ROOF_IN(JJ) * PT_ROOF(JJ,IROOF_LAYER) 00264 ! 00265 ELSEIF (HBLD=="BEM") THEN 00266 ! 00267 ZB(JJ, IROOF_LAYER) = ZB(JJ,IROOF_LAYER) + ZIMPL * & 00268 (ZCHTC_IN_ROOF(JJ) * 4./3. + PRADHT_IN(JJ) * & 00269 (PF_FLOOR_MASS(JJ) + PF_FLOOR_WIN(JJ) + & 00270 PF_FLOOR_WALL(JJ) + PF_FLOOR_ROOF(JJ) )) 00271 00272 ZY(JJ,IROOF_LAYER) = ZY(JJ,IROOF_LAYER) + & 00273 ZCHTC_IN_ROOF(JJ) * (PTI_BLD(JJ) - 1./3. * PT_ROOF(JJ, IROOF_LAYER)*(4*ZEXPL - 1.)) + & 00274 PRADHT_IN(JJ) * ( & 00275 PF_FLOOR_MASS (JJ) * (PTS_MASS(JJ) - ZEXPL * PT_ROOF(JJ,IROOF_LAYER)) + & 00276 PF_FLOOR_WIN (JJ) * (PT_WIN2 (JJ) - ZEXPL * PT_ROOF(JJ,IROOF_LAYER)) + & 00277 PF_FLOOR_WALL (JJ) * (PTI_WALL(JJ) - ZEXPL * PT_ROOF(JJ,IROOF_LAYER)) + & 00278 PF_FLOOR_ROOF (JJ) * (PTS_FLOOR(JJ)- ZEXPL * PT_ROOF(JJ,IROOF_LAYER)) ) + & 00279 PLOAD_IN_ROOF(JJ) 00280 ! 00281 ENDIF 00282 ! 00283 ENDDO 00284 ! 00285 ! 00286 CALL LAYER_E_BUDGET( PT_ROOF, PTSTEP, ZIMPL, PHC_ROOF, PTC_ROOF, PD_ROOF, & 00287 ZA, ZB, ZC, ZY, PDQS_ROOF ) 00288 ! 00289 !------------------------------------------------------------------------------- 00290 ! 00291 !* diagnostic: computation of flux between bld and internal roof layer 00292 DO JJ=1,SIZE(PT_ROOF,1) 00293 ! 00294 ZTI_ROOF_CONV(JJ) = 4./3. * ZIMPL * PT_ROOF(JJ, IROOF_LAYER) + 1./3. * ZTI_ROOF(JJ) * (4*ZEXPL -1.) 00295 ZTI_ROOF(JJ) = ZEXPL * ZTI_ROOF(JJ) + ZIMPL * PT_ROOF(JJ, IROOF_LAYER) 00296 SELECT CASE(HBLD) 00297 CASE("DEF") 00298 PFLX_BLD_ROOF(JJ) = ZMTC_O_D_ROOF_IN(JJ) * (PTI_BLD(JJ) - ZTI_ROOF(JJ)) 00299 CASE("BEM") 00300 PRAD_ROOF_WALL(JJ) = PRADHT_IN(JJ) * (ZTI_ROOF(JJ) - PTI_WALL(JJ)) 00301 PRAD_ROOF_WIN(JJ) = PRADHT_IN(JJ) * (ZTI_ROOF(JJ) - PT_WIN2(JJ)) 00302 PRAD_ROOF_FLOOR(JJ)= PRADHT_IN(JJ) * (ZTI_ROOF(JJ) - PTS_FLOOR(JJ)) 00303 PRAD_ROOF_MASS(JJ) = PRADHT_IN(JJ) * (ZTI_ROOF(JJ) - PTS_MASS(JJ)) 00304 PCONV_ROOF_BLD(JJ) = ZCHTC_IN_ROOF (JJ) * (ZTI_ROOF_CONV(JJ) - PTI_BLD (JJ)) 00305 PFLX_BLD_ROOF(JJ) = -(PRAD_ROOF_WALL(JJ) + PRAD_ROOF_WIN(JJ) + PRAD_ROOF_FLOOR(JJ) + PRAD_ROOF_MASS(JJ) + PCONV_ROOF_BLD(JJ)) 00306 ENDSELECT 00307 00308 ! 00309 !* 8. Infra-red radiation absorbed by roofs 00310 ! ------------------------------------- 00311 ! 00312 !* radiative surface temperature at intermediate time step 00313 ZTRAD_ROOF(JJ) = ( ZTS_ROOF(JJ)**4 + & 00314 4.*ZIMPL*ZTS_ROOF(JJ)**3 * (PT_ROOF(JJ,1) - ZTS_ROOF(JJ)) )**0.25 00315 ! 00316 !* absorbed LW 00317 PABS_LW_ROOF(JJ) = PEMIS_ROOF(JJ) * (PLW_RAD(JJ) - XSTEFAN * ZTRAD_ROOF(JJ)** 4) 00318 ! 00319 !* 9. Sensible heat flux between snow free roof and air 00320 ! ------------------------------------------------- 00321 ! 00322 !* aerodynamic surface temperature at the intermediate time step 00323 ZTAER_ROOF(JJ) = ZEXPL * ZTS_ROOF(JJ) + ZIMPL * PT_ROOF(JJ,1) 00324 PHFREE_ROOF(JJ) = ZRHO_ACF_ROOF(JJ) * XCPD * & 00325 ( ZTAER_ROOF(JJ)/PEXNS(JJ) - PTA(JJ)/PEXNA(JJ) ) 00326 ! 00327 ZHEAT_RR(JJ) = PRR(JJ) * XCL * (ZTAER_ROOF(JJ) - PTA(JJ)) 00328 ! 00329 !* 10. Latent heat flux between snow free roof and air 00330 ! ------------------------------------------------- 00331 ! 00332 PLEFREE_ROOF(JJ) = ZRHO_ACF_ROOF_WAT(JJ) * XLVTT * PDELT_ROOF(JJ) * & 00333 ( PQSAT_ROOF(JJ) - PQA(JJ) + & 00334 ZIMPL * ZDQSAT_ROOF(JJ) * (PT_ROOF(JJ,1) - ZTS_ROOF(JJ)) ) 00335 ! 00336 ! 13. Energy imbalance for verification 00337 ! --------------------------------- 00338 PIMB_ROOF(JJ) = PABS_SW_ROOF(JJ) + PABS_LW_ROOF(JJ) - PDQS_ROOF(JJ) & 00339 - ZDF_ROOF(JJ) * ( PHFREE_ROOF(JJ) + PLEFREE_ROOF(JJ)) & 00340 - PDN_ROOF(JJ) * PGSNOW_ROOF(JJ) + PFLX_BLD_ROOF(JJ) 00341 ! 00342 ENDDO 00343 ! 00344 !* 11. New saturated specified humidity near the roof surface 00345 ! ------------------------------------------------------ 00346 ! 00347 PQSAT_ROOF(:) = QSAT(PT_ROOF(:,1),PPS(:)) 00348 ! 00349 !------------------------------------------------------------------------- 00350 IF (LHOOK) CALL DR_HOOK('ROOF_LAYER_E_BUDGET',1,ZHOOK_HANDLE) 00351 !------------------------------------------------------------------------- 00352 ! 00353 END SUBROUTINE ROOF_LAYER_E_BUDGET