SURFEX v7.3
General documentation of Surfex
|
00001 ! ########################################################################## 00002 SUBROUTINE FLOOR_LAYER_E_BUDGET(PT_FLOOR, PTSTEP, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, & 00003 PFLX_BLD_FLOOR, PDQS_FLOOR, PIMB_FLOOR, & 00004 PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, & 00005 PF_FLOOR_ROOF, PRADHT_IN, & 00006 PTS_MASS, PRAD_WALL_FLOOR, PRAD_ROOF_FLOOR, & 00007 PRAD_WIN_FLOOR, PLOAD_FLOOR, PTI_BLD, & 00008 PRAD_FLOOR_MASS, PCONV_FLOOR_BLD ) 00009 ! ########################################################################## 00010 ! 00011 !!**** *FLOOR_LAYER_E_BUDGET* 00012 !! 00013 !! PURPOSE 00014 !! ------- 00015 ! 00016 ! Computes the evoultion of building floor temperatures 00017 ! 00018 ! 00019 !!** METHOD 00020 ! ------ 00021 ! 00022 ! 6 : equations for evolution of Ts_floor 00023 ! ************************************************************* 00024 ! 00025 ! dTf_k(t) / dt = 1/(df_k*Cf_k) * (- 2*Kf_k-1*(Tf_k-Tf_k-1)/(df_k-1 +df_k) 00026 ! - 2*Kf_k *(Tf_k-Tf_k+1)/(df_k+1 +df_k) ) 00027 ! 00028 ! dTf_1(t) / dt = 1/(df_1*Cf_1) * (- 2*Kw_1*(Tw_1-Tw_2)/(dw_1 +dw_2)) 00029 ! 00030 ! with 00031 ! 00032 ! K*_k = (d*_k+ d*_k+1)/(d*_k/k*_k+ d*_k+1/k*_k+1) 00033 ! 00034 ! 00035 ! The system is implicited (or semi-implicited). 00036 ! 00037 ! ZIMPL=1 ---> implicit system 00038 ! ZIMPL=0.5 ---> semi-implicit system 00039 ! ZIMPL=0 ---> explicit system 00040 ! 00041 ! 00042 ! 00043 ! 00044 !! EXTERNAL 00045 !! -------- 00046 !! 00047 !! 00048 !! IMPLICIT ARGUMENTS 00049 !! ------------------ 00050 !! 00051 !! MODD_CST 00052 !! 00053 !! 00054 !! REFERENCE 00055 !! --------- 00056 !! 00057 !! 00058 !! AUTHOR 00059 !! ------ 00060 !! 00061 !! G. Pigeon * Meteo-France * 00062 !! 00063 !! MODIFICATIONS 00064 !! ------------- 00065 !! Original 15/04/09 00066 !! G. Pigeon 08/10 computation of residual of energy balance 00067 !! modification of the limit condition for 00068 !! the deep temp. from the deep road temp. 00069 !! to zero flux condition. idem for sfce T 00070 !! G. Pigeon 11/11 split in 2 for floor and mass to be flux conservative 00071 !! G. Pigeon 09/12 modif of conv. coef + implicitation of the exchange 00072 !------------------------------------------------------------------------------- 00073 ! 00074 !* 0. DECLARATIONS 00075 ! ------------ 00076 ! 00077 USE MODI_LAYER_E_BUDGET_GET_COEF 00078 USE MODI_LAYER_E_BUDGET 00079 USE MODE_CONV_DOE 00080 ! 00081 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00082 USE PARKIND1 ,ONLY : JPRB 00083 ! 00084 IMPLICIT NONE 00085 ! 00086 !* 0.1 declarations of arguments 00087 ! 00088 REAL, DIMENSION(:,:), INTENT(INOUT) :: PT_FLOOR ! floor layers temperatures 00089 REAL, INTENT(IN) :: PTSTEP ! time step 00090 REAL, DIMENSION(:,:), INTENT(IN) :: PHC_FLOOR ! heat capacity for road layers 00091 REAL, DIMENSION(:,:), INTENT(IN) :: PTC_FLOOR ! thermal conductivity for 00092 !road layers 00093 REAL, DIMENSION(:,:), INTENT(IN) :: PD_FLOOR ! depth of road layers 00094 REAL, DIMENSION(:), INTENT(OUT) :: PFLX_BLD_FLOOR !flux from building to floor 00095 REAL, DIMENSION(:), INTENT(OUT) :: PDQS_FLOOR !heat storage inside the floor 00096 REAL, DIMENSION(:), INTENT(OUT) :: PIMB_FLOOR !floor energy residual imbalance for verification 00097 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_MASS ! View factor floor-mass 00098 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_WALL ! View factor floor-wall 00099 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_WIN ! View factor floor-window 00100 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_ROOF ! View factor floor-roof 00101 REAL, DIMENSION(:), INTENT(IN) :: PRADHT_IN ! Indoor radiant heat transfer coefficient 00102 ! [W K-1 m-2] 00103 REAL, DIMENSION(:), INTENT(IN) :: PTS_MASS ! surf. mass temp. (contact with bld air) 00104 REAL, DIMENSION(:), INTENT(IN) :: PRAD_ROOF_FLOOR ! rad. fluxes from roof to floor[W m-2(roof)] 00105 REAL, DIMENSION(:), INTENT(IN) :: PRAD_WALL_FLOOR ! rad. fluxes from wall to floor[W m-2(wall)] 00106 REAL, DIMENSION(:), INTENT(IN) :: PRAD_WIN_FLOOR ! rad. fluxes from win to floor[W m-2(win)] 00107 REAL, DIMENSION(:), INTENT(IN) :: PTI_BLD ! indoor air temp. 00108 REAL, DIMENSION(:), INTENT(IN) :: PLOAD_FLOOR ! solar and internal load to the floor 00109 REAL, DIMENSION(:), INTENT(OUT) :: PRAD_FLOOR_MASS ! rad. fluxes from floor to mass [W m-2(floor)] 00110 REAL, DIMENSION(:), INTENT(OUT) :: PCONV_FLOOR_BLD ! conv. fluxes from floor to bld [W m-2(floor)] 00111 ! 00112 !* 0.2 declarations of local variables 00113 ! 00114 ! 00115 REAL :: ZIMPL=1.0 ! implicit coefficient 00116 REAL :: ZEXPL=0.0 ! explicit coefficient 00117 ! 00118 REAL, DIMENSION(SIZE(PT_FLOOR,1),SIZE(PT_FLOOR,2)) :: ZA, ! lower diag. 00119 ZB, ! main diag. 00120 ZC, ! upper diag. 00121 ZY ! r.h.s. 00122 ! 00123 REAL, DIMENSION(SIZE(PT_FLOOR,1)) :: ZTS_FLOOR ! surf. floor temp. used for rad. exchanges 00124 REAL, DIMENSION(SIZE(PT_FLOOR,1)) :: ZTS_FLOOR_CONV ! surf. floor temp. used for conv exchanges 00125 ! used during calculation 00126 REAL, DIMENSION(SIZE(PT_FLOOR,1)) :: ZCHTC_IN_FLOOR ! Indoor floor convec heat transfer coefficient 00127 ! [W K-1 m-2(bld)] 00128 00129 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00130 INTEGER :: JJ 00131 !------------------------------------------------------------------------------- 00132 IF (LHOOK) CALL DR_HOOK('FLOOR_LAYER_E_BUDGET',0,ZHOOK_HANDLE) 00133 ! 00134 ! *Convection heat transfer coefficients [W m-2 K-1] 00135 ! From EP Engineering Reference 00136 ZCHTC_IN_FLOOR(:) = CHTC_UP_DOE(PT_FLOOR(:,1), PTI_BLD(:)) 00137 DO JJ=1,SIZE(ZCHTC_IN_FLOOR) 00138 ZCHTC_IN_FLOOR(JJ) = MAX(1., ZCHTC_IN_FLOOR(JJ)) 00139 ENDDO 00140 00141 00142 ! 00143 CALL LAYER_E_BUDGET_GET_COEF( PT_FLOOR, PTSTEP, ZIMPL, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, & 00144 ZA, ZB, ZC, ZY ) 00145 ! 00146 ZTS_FLOOR(:) = PT_FLOOR(:,1) 00147 00148 ZB(:,1) = ZB(:,1) + ZIMPL * & 00149 (ZCHTC_IN_FLOOR(:)*4./3. + PRADHT_IN(:) * PF_FLOOR_MASS(:)) 00150 00151 00152 ZY(:,1) = ZY(:,1) & 00153 + ZCHTC_IN_FLOOR(:) * (PTI_BLD(:) - 1./3. * PT_FLOOR(:, 1) * (4* ZEXPL -1)) & 00154 + PF_FLOOR_WIN (:) * PRAD_WIN_FLOOR(:) & 00155 + PF_FLOOR_WALL (:) * PRAD_WALL_FLOOR(:) & 00156 + PF_FLOOR_ROOF (:) * PRAD_ROOF_FLOOR(:) & 00157 + PRADHT_IN(:) * PF_FLOOR_MASS (:) * (PTS_MASS(:) - ZEXPL * PT_FLOOR(:,1)) & 00158 + PLOAD_FLOOR(:) 00159 ! 00160 CALL LAYER_E_BUDGET( PT_FLOOR, PTSTEP, ZIMPL, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, & 00161 ZA, ZB, ZC, ZY, PDQS_FLOOR ) 00162 ! 00163 !* floor surface temperature used in the implicit formulation 00164 ! ---------------------------------------------------------- 00165 ZTS_FLOOR_CONV(:) = 4./3. * ZIMPL * PT_FLOOR(:,1) + 1./3. * ZTS_FLOOR(:) * (4 * ZEXPL - 1.) 00166 ZTS_FLOOR(:) = ZEXPL * ZTS_FLOOR(:) + ZIMPL * PT_FLOOR(:,1) 00167 ! 00168 !* fluxes with mass and indoor air 00169 ! ---------------------------------------------------------- 00170 PRAD_FLOOR_MASS(:) = PRADHT_IN(:) * (ZTS_FLOOR(:) - PTS_MASS(:)) 00171 PCONV_FLOOR_BLD(:) = ZCHTC_IN_FLOOR(:) * (ZTS_FLOOR_CONV(:) - PTI_BLD (:)) 00172 ! 00173 !* Flux between floor and indoor surfaces and air 00174 ! ------------------------------------------------ 00175 PFLX_BLD_FLOOR(:) = - PCONV_FLOOR_BLD(:) & 00176 + PF_FLOOR_WIN (:) * PRAD_WIN_FLOOR(:) & 00177 + PF_FLOOR_WALL (:) * PRAD_WALL_FLOOR(:) & 00178 + PF_FLOOR_ROOF (:) * PRAD_ROOF_FLOOR(:) & 00179 + PRADHT_IN(:) * PF_FLOOR_MASS(:) * (PTS_MASS (:) - ZTS_FLOOR(:)) & 00180 + PLOAD_FLOOR(:) 00181 ! 00182 !* Floor residual energy imbalance for verification 00183 ! ------------------------------------------------ 00184 PIMB_FLOOR(:) = PFLX_BLD_FLOOR(:) - PDQS_FLOOR(:) 00185 ! 00186 IF (LHOOK) CALL DR_HOOK('FLOOR_LAYER_E_BUDGET',1,ZHOOK_HANDLE) 00187 !------------------------------------------------------------------------------- 00188 END SUBROUTINE FLOOR_LAYER_E_BUDGET