SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/roof_layer_e_budget.F90
Go to the documentation of this file.
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