SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE BLD_E_BUDGET( OTI_EVOL, PTSTEP, PBLD, PWALL_O_HOR, & 00003 PRHOA, PT_ROOF, PT_WALL, PTI_BLD, PTS_FLOOR ) 00004 ! ########################################################################## 00005 ! 00006 !!**** *BLD_E_BUDGET* 00007 !! 00008 !! PURPOSE 00009 !! ------- 00010 ! 00011 ! Computes the evoultion of the temperature of inside building air 00012 00013 ! 00014 !!** METHOD 00015 ! ------ 00016 ! 00017 ! The resistance term between the surfaces and the room is given 00018 ! by a standard value, which mimics both the convection 00019 ! and the radiative interactions in the room. 00020 ! This explains the very low resistance. It is used to compute 00021 ! the evolution of the surfaces only. 00022 ! This resistance value is 0.123 Km/W (typical for inside surfaces). 00023 ! (ENVIRONMENTAL SCIENCE IN BUILDING, 3rd Edition, Randall McMullan, 00024 ! THE MACMILLAN PRESS Limited). 00025 ! 00026 ! 00027 ! 00028 ! On the contrary, the evolution of the air temperature is mainly 00029 ! governed by the convection (considering the low radiative absorption 00030 ! of the air itself). 00031 ! In order to have a simple formulation, a diurnal cycle is assumed, 00032 ! with a force restore formulation. 00033 ! 00034 ! The floor temperature is fixed 00035 ! 00036 !! EXTERNAL 00037 !! -------- 00038 !! 00039 !! 00040 !! IMPLICIT ARGUMENTS 00041 !! ------------------ 00042 !! 00043 !! MODD_CST 00044 !! 00045 !! 00046 !! REFERENCE 00047 !! --------- 00048 !! 00049 !! 00050 !! AUTHOR 00051 !! ------ 00052 !! 00053 !! V. Masson * Meteo-France * 00054 !! 00055 !! MODIFICATIONS 00056 !! ------------- 00057 !! Original 24/08/00 00058 ! 00059 !------------------------------------------------------------------------------- 00060 ! 00061 !* 0. DECLARATIONS 00062 ! ------------ 00063 ! 00064 USE MODD_CSTS,ONLY : XTT, XCPD, XDAY 00065 USE MODD_SURF_PAR,ONLY : XUNDEF 00066 ! 00067 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00068 USE PARKIND1 ,ONLY : JPRB 00069 ! 00070 IMPLICIT NONE 00071 ! 00072 !* 0.1 declarations of arguments 00073 ! 00074 LOGICAL, INTENT(IN) :: OTI_EVOL ! true --> internal temp. of 00075 ! ! of buildings evolves 00076 ! ! false--> it is fixed 00077 REAL, INTENT(IN) :: PTSTEP ! time step 00078 REAL, DIMENSION(:), INTENT(IN) :: PBLD ! building fraction 00079 REAL, DIMENSION(:), INTENT(IN) :: PWALL_O_HOR ! wall surf. / hor. surf. 00080 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! air density 00081 ! at the lowest level 00082 REAL, DIMENSION(:,:), INTENT(IN) :: PT_ROOF ! roof layers temperatures 00083 REAL, DIMENSION(:,:), INTENT(IN) :: PT_WALL ! wall layers temperatures 00084 REAL, DIMENSION(:), INTENT(INOUT):: PTI_BLD ! building air temperature 00085 ! computed with its equation evolution 00086 REAL, DIMENSION(:), INTENT(IN) :: PTS_FLOOR ! floor surface temperature 00087 ! 00088 !* 0.2 declarations of local variables 00089 ! 00090 ! 00091 REAL :: ZTAU ! temporal filter period 00092 ! 00093 INTEGER :: IROOF ! number of roof layers 00094 INTEGER :: IWALL ! number of wall layers 00095 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00096 !------------------------------------------------------------------------------- 00097 IF (LHOOK) CALL DR_HOOK('BLD_E_BUDGET',0,ZHOOK_HANDLE) 00098 ! 00099 !* 1. initializations 00100 ! --------------- 00101 ! 00102 IROOF = SIZE(PT_ROOF,2) 00103 IWALL = SIZE(PT_WALL,2) 00104 ! 00105 !!! 27/01/2012 passé dans TEB 00106 !! PTS_FLOOR(:)= 19. + XTT 00107 !!! 27/01/2012 passé dans TEB 00108 ! 00109 !* 2. no evolution of interior temperature if OTI_EVOL=.FALSE. 00110 ! -------------------------------------------------------- 00111 ! 00112 IF (.NOT. OTI_EVOL .AND. LHOOK) CALL DR_HOOK('BLD_E_BUDGET',1,ZHOOK_HANDLE) 00113 IF (.NOT. OTI_EVOL) RETURN 00114 ! 00115 !* 3. evolution of the internal temperature 00116 ! ------------------------------------- 00117 ! 00118 ZTAU = XDAY 00119 ! 00120 WHERE (PBLD(:) .GT. 0.) 00121 PTI_BLD(:) = PTI_BLD(:) * (ZTAU-PTSTEP)/ZTAU & 00122 + ( PT_ROOF(:,IROOF) * PBLD (:) & 00123 + PT_WALL(:,IWALL) * PWALL_O_HOR(:) & 00124 + PTS_FLOOR(:) * PBLD (:) ) & 00125 / ( 2. * PBLD(:) + PWALL_O_HOR(:) ) * PTSTEP / ZTAU 00126 ELSEWHERE 00127 PTI_BLD (:) = PTS_FLOOR(:) 00128 ENDWHERE 00129 ! 00130 ! 00131 !* 5. internal temperature set to a minimum value (heating) 00132 ! ----------------------------------------------------- 00133 ! 00134 PTI_BLD(:) = MAX( PTI_BLD(:) , PTS_FLOOR (:) ) 00135 ! 00136 IF (LHOOK) CALL DR_HOOK('BLD_E_BUDGET',1,ZHOOK_HANDLE) 00137 !------------------------------------------------------------------------------- 00138 END SUBROUTINE BLD_E_BUDGET