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