SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_bld_description.F90
Go to the documentation of this file.
00001 !     #########################
00002       SUBROUTINE READ_BLD_DESCRIPTION(HPROGRAM)
00003 !     #########################
00004 !
00005 !!
00006 !!    PURPOSE
00007 !!    -------
00008 !!
00009 !!    METHOD
00010 !!    ------
00011 !!
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!    IMPLICIT ARGUMENTS
00017 !!    ------------------
00018 !!
00019 !!    REFERENCE
00020 !!    ---------
00021 !!
00022 !!    AUTHOR
00023 !!    ------
00024 !!
00025 !!    V. Masson        Meteo-France
00026 !!
00027 !!    MODIFICATION
00028 !!    ------------
00029 !!
00030 !!    Original    05/2012 
00031 !
00032 !----------------------------------------------------------------------------
00033 !
00034 !*    0.     DECLARATION
00035 !            -----------
00036 !
00037 USE MODD_BLD_DESCRIPTION
00038 !
00039 USE MODI_READ_SURF
00040 USE MODI_ABOR1_SFX
00041 !
00042 !
00043 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00044 USE PARKIND1  ,ONLY : JPRB
00045 !
00046 IMPLICIT NONE
00047 !
00048 !*    0.1    Declaration of arguments
00049 !            ------------------------
00050 !
00051  CHARACTER(LEN=6),  INTENT(IN) :: HPROGRAM
00052 !
00053 !
00054 !*    0.2    Declaration of local variables
00055 !      ------------------------------
00056 !
00057 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00058 !
00059 REAL, DIMENSION(:), ALLOCATABLE :: ZWORK
00060 INTEGER                         :: IRESP
00061 INTEGER                         :: I1, I2
00062 INTEGER                         :: JL
00063 INTEGER                         :: ITOT
00064 !-------------------------------------------------------------------------------
00065 !-------------------------------------------------------------------------------
00066 !
00067 IF (LHOOK) CALL DR_HOOK('READ_BLD_DESCRIPTION',0,ZHOOK_HANDLE)
00068 !
00069 !-------------------------------------------------------------------------------
00070 !
00071 !*    1.   Read configuration variables of the descriptive data
00072 !          ----------------------------------------------------
00073 !
00074 ALLOCATE(ZWORK(7))
00075  CALL READ_SURF(HPROGRAM,'BLD_DESC_CONF',ZWORK,IRESP,HDIR='-')
00076 !
00077 NDESC_BLD         = NINT(ZWORK(1))
00078 NDESC_AGE         = NINT(ZWORK(2))
00079 NDESC_USE         = NINT(ZWORK(3))
00080 NDESC_WALL_LAYER  = NINT(ZWORK(4))
00081 NDESC_ROOF_LAYER  = NINT(ZWORK(5))
00082 NDESC_ROAD_LAYER  = NINT(ZWORK(6))
00083 NDESC_FLOOR_LAYER = NINT(ZWORK(7))
00084 !
00085 DEALLOCATE(ZWORK)
00086 !
00087 NDESC_CODE = NDESC_BLD * NDESC_AGE
00088 !-------------------------------------------------------------------------------
00089 !
00090 !*    2.   Allocates descriptive data
00091 !          --------------------------
00092 !
00093 !
00094 ALLOCATE(NDESC_BLD_LIST(NDESC_BLD))
00095 ALLOCATE(NDESC_CODE_LIST(NDESC_CODE))
00096 ALLOCATE(XDESC_ALB_ROOF(NDESC_CODE))
00097 ALLOCATE(XDESC_ALB_ROAD(NDESC_CODE))
00098 ALLOCATE(XDESC_ALB_WALL(NDESC_CODE))
00099 ALLOCATE(XDESC_EMIS_ROOF(NDESC_CODE))
00100 ALLOCATE(XDESC_EMIS_ROAD(NDESC_CODE))
00101 ALLOCATE(XDESC_EMIS_WALL(NDESC_CODE))
00102 ALLOCATE(XDESC_HC_ROOF(NDESC_CODE,NDESC_ROOF_LAYER))
00103 ALLOCATE(XDESC_TC_ROOF(NDESC_CODE,NDESC_ROOF_LAYER))
00104 ALLOCATE(XDESC_D_ROOF (NDESC_CODE,NDESC_ROOF_LAYER))
00105 ALLOCATE(XDESC_HC_ROAD(NDESC_CODE,NDESC_ROAD_LAYER))
00106 ALLOCATE(XDESC_TC_ROAD(NDESC_CODE,NDESC_ROAD_LAYER))
00107 ALLOCATE(XDESC_D_ROAD (NDESC_CODE,NDESC_ROAD_LAYER))
00108 ALLOCATE(XDESC_HC_WALL(NDESC_CODE,NDESC_WALL_LAYER))
00109 ALLOCATE(XDESC_TC_WALL(NDESC_CODE,NDESC_WALL_LAYER))
00110 ALLOCATE(XDESC_D_WALL (NDESC_CODE,NDESC_WALL_LAYER))
00111 ALLOCATE(XDESC_HC_FLOOR(NDESC_CODE,NDESC_FLOOR_LAYER))
00112 ALLOCATE(XDESC_TC_FLOOR(NDESC_CODE,NDESC_FLOOR_LAYER))
00113 ALLOCATE(XDESC_D_FLOOR (NDESC_CODE,NDESC_FLOOR_LAYER))
00114 ALLOCATE(XDESC_SHGC(NDESC_CODE))
00115 ALLOCATE(XDESC_U_WIN(NDESC_CODE))
00116 ALLOCATE(XDESC_GR(NDESC_CODE))
00117 !
00118 ALLOCATE(XDESC_F_WASTE_CAN(NDESC_CODE))
00119 ALLOCATE(XDESC_F_WATER_COND(NDESC_CODE))
00120 ALLOCATE(XDESC_COP_RAT(NDESC_CODE))
00121 ALLOCATE(XDESC_EFF_HEAT(NDESC_CODE))
00122 ALLOCATE(XDESC_INF(NDESC_CODE))
00123 ALLOCATE(XDESC_V_VENT(NDESC_CODE))
00124 ALLOCATE(XDESC_GREENROOF(NDESC_CODE))
00125 !
00126 !
00127 ALLOCATE(NDESC_USE_LIST(NDESC_USE))
00128 ALLOCATE(XDESC_TCOOL_TARGET(NDESC_USE))
00129 ALLOCATE(XDESC_THEAT_TARGET(NDESC_USE))
00130 ALLOCATE(XDESC_QIN(NDESC_USE))
00131 ALLOCATE(XDESC_QIN_FLAT(NDESC_USE))
00132 ALLOCATE(XDESC_SHGC_SH(NDESC_USE))
00133 ALLOCATE(XDESC_SHADE(NDESC_USE))
00134 ALLOCATE(XDESC_NATVENT(NDESC_USE))
00135 !
00136 ALLOCATE(NDESC_AGE_LIST(NDESC_AGE))
00137 ALLOCATE(NDESC_AGE_DATE(NDESC_AGE))
00138 !-------------------------------------------------------------------------------
00139 !
00140 !*    3.   Read descriptive data
00141 !          ---------------------
00142 !
00143 ITOT=(17+3*NDESC_ROOF_LAYER+3*NDESC_ROAD_LAYER+3*NDESC_WALL_LAYER+3*NDESC_FLOOR_LAYER)*NDESC_CODE &
00144       + 8*NDESC_USE + 2*NDESC_AGE + NDESC_BLD
00145 ALLOCATE(ZWORK(ITOT))
00146 !
00147  CALL READ_SURF(HPROGRAM,'BLD_DESC_DATA',ZWORK,IRESP,HDIR='-')
00148 !
00149 !
00150 I1=0 ; I2=0
00151  CALL UP_DESC_IND(NDESC_BLD)  ; NDESC_BLD_LIST(:)  = NINT(ZWORK(I1:I2))
00152  CALL UP_DESC_IND(NDESC_CODE) ; NDESC_CODE_LIST(:)  = NINT(ZWORK(I1:I2))
00153  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_ALB_ROOF(:)  = ZWORK(I1:I2)
00154  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_ALB_ROAD(:)  = ZWORK(I1:I2)
00155  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_ALB_WALL(:)  = ZWORK(I1:I2)
00156  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_EMIS_ROOF(:) = ZWORK(I1:I2)
00157  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_EMIS_ROAD(:) = ZWORK(I1:I2)
00158  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_EMIS_WALL(:) = ZWORK(I1:I2)
00159 DO JL=1,NDESC_ROOF_LAYER
00160   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_HC_ROOF(:,JL) = ZWORK(I1:I2)
00161 END DO
00162 DO JL=1,NDESC_ROOF_LAYER
00163   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_TC_ROOF(:,JL) = ZWORK(I1:I2)
00164 END DO
00165 DO JL=1,NDESC_ROOF_LAYER
00166   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_D_ROOF (:,JL) = ZWORK(I1:I2)
00167 END DO
00168 DO JL=1,NDESC_ROAD_LAYER
00169   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_HC_ROAD(:,JL) = ZWORK(I1:I2)
00170 END DO
00171 DO JL=1,NDESC_ROAD_LAYER
00172   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_TC_ROAD(:,JL) = ZWORK(I1:I2)
00173 END DO
00174 DO JL=1,NDESC_ROAD_LAYER
00175   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_D_ROAD (:,JL) = ZWORK(I1:I2)
00176 END DO
00177 DO JL=1,NDESC_WALL_LAYER
00178   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_HC_WALL(:,JL) = ZWORK(I1:I2)
00179 END DO
00180 DO JL=1,NDESC_WALL_LAYER
00181   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_TC_WALL(:,JL) = ZWORK(I1:I2)
00182 END DO
00183 DO JL=1,NDESC_WALL_LAYER
00184   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_D_WALL (:,JL) = ZWORK(I1:I2)
00185 END DO
00186 DO JL=1,NDESC_FLOOR_LAYER
00187   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_HC_FLOOR(:,JL) = ZWORK(I1:I2)
00188 END DO
00189 DO JL=1,NDESC_FLOOR_LAYER
00190   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_TC_FLOOR(:,JL) = ZWORK(I1:I2)
00191 END DO
00192 DO JL=1,NDESC_FLOOR_LAYER
00193   CALL UP_DESC_IND(NDESC_CODE) ; XDESC_D_FLOOR (:,JL) = ZWORK(I1:I2)
00194 END DO
00195 !
00196  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_SHGC(:)  = ZWORK(I1:I2)
00197  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_U_WIN(:) = ZWORK(I1:I2)
00198  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_GR(:)    = ZWORK(I1:I2)
00199 !
00200  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_F_WASTE_CAN(:)  = ZWORK(I1:I2)
00201  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_F_WATER_COND(:) = ZWORK(I1:I2)
00202  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_COP_RAT(:)      = ZWORK(I1:I2)
00203  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_EFF_HEAT(:)     = ZWORK(I1:I2)
00204  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_INF(:)          = ZWORK(I1:I2)
00205  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_V_VENT(:)       = ZWORK(I1:I2)
00206  CALL UP_DESC_IND(NDESC_CODE) ; XDESC_GREENROOF(:)    = ZWORK(I1:I2)
00207 !
00208  CALL UP_DESC_IND(NDESC_USE) ; NDESC_USE_LIST(:)     = NINT(ZWORK(I1:I2))
00209  CALL UP_DESC_IND(NDESC_USE) ; XDESC_TCOOL_TARGET(:) = ZWORK(I1:I2)
00210  CALL UP_DESC_IND(NDESC_USE) ; XDESC_THEAT_TARGET(:) = ZWORK(I1:I2)
00211  CALL UP_DESC_IND(NDESC_USE) ; XDESC_QIN(:)          = ZWORK(I1:I2)
00212  CALL UP_DESC_IND(NDESC_USE) ; XDESC_QIN_FLAT(:)     = ZWORK(I1:I2)
00213  CALL UP_DESC_IND(NDESC_USE) ; XDESC_SHGC_SH(:)      = ZWORK(I1:I2)
00214  CALL UP_DESC_IND(NDESC_USE) ; XDESC_SHADE(:)        = ZWORK(I1:I2)
00215  CALL UP_DESC_IND(NDESC_USE) ; XDESC_NATVENT(:)      = ZWORK(I1:I2)
00216 !
00217  CALL UP_DESC_IND(NDESC_AGE) ; NDESC_AGE_LIST(:)     = NINT(ZWORK(I1:I2))
00218  CALL UP_DESC_IND(NDESC_AGE) ; NDESC_AGE_DATE(:)     = NINT(ZWORK(I1:I2))
00219 !
00220 DEALLOCATE(ZWORK)
00221 !
00222 IF (LHOOK) CALL DR_HOOK('READ_BLD_DESCRIPTION',1,ZHOOK_HANDLE)
00223 !-------------------------------------------------------------------------------
00224 CONTAINS
00225 SUBROUTINE UP_DESC_IND(K)
00226 INTEGER, INTENT(IN) :: K
00227 I1=I2+1
00228 I2=I2+K
00229 END SUBROUTINE UP_DESC_IND
00230 !-------------------------------------------------------------------------------
00231 !
00232 END SUBROUTINE READ_BLD_DESCRIPTION