SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/ini_data_param_teb.F90
Go to the documentation of this file.
00001 !     #########################
00002       SUBROUTINE INI_DATA_PARAM_TEB(KTYPE,                                          &
00003                                 PZ0_TOWN, PALB_ROOF, PALB_ROAD, PALB_WALL,          &
00004                                 PEMIS_ROOF, PEMIS_ROAD, PEMIS_WALL, PHC_ROOF,       &
00005                                 PHC_ROAD, PHC_WALL, PTC_ROOF, PTC_ROAD, PTC_WALL,   &
00006                                 PD_ROOF, PD_ROAD, PD_WALL, PBLD_HEIGHT,             &
00007                                 PWALL_O_HOR, PBLD, PCAN_HW_RATIO, PH_TRAFFIC,       & 
00008                                 PLE_TRAFFIC, PH_INDUSTRY, PLE_INDUSTRY,             & 
00009                                 PGARDEN, OGARDEN, PHC_FLOOR,                        &
00010                                 PTC_FLOOR, PD_FLOOR, PTCOOL_TARGET, PTHEAT_TARGET,  &
00011                                 PF_WASTE_CAN, PEFF_HEAT, PQIN, PQIN_FRAD, PSHGC,    &
00012                                 PU_WIN, PGR, PSHGC_SH, PFLOOR_HEIGHT, PINF,         &
00013                                 PF_WATER_COND, PQIN_FLAT, PHR_TARGET, PV_VENT,      &
00014                                 PCAP_SYS_HEAT, PCAP_SYS_RAT, PT_ADP, PM_SYS_RAT,    &
00015                                 PCOP_RAT, PT_SIZE_MAX, PT_SIZE_MIN, PSHADE,         &
00016                                 PNATVENT, PROUGH_ROOF, PROUGH_WALL, PGREENROOF      )
00017 
00018 !     #########################
00019 !
00020 !!
00021 !!    PURPOSE
00022 !!    -------
00023 !!
00024 !!    METHOD
00025 !!    ------
00026 !!
00027 !!
00028 !!    EXTERNAL
00029 !!    --------
00030 !!
00031 !!    IMPLICIT ARGUMENTS
00032 !!    ------------------
00033 !!
00034 !!    REFERENCE
00035 !!    ---------
00036 !!
00037 !!    AUTHOR
00038 !!    ------
00039 !!
00040 !!    S. Faroux & V. Masson        Meteo-France
00041 !!
00042 !!    MODIFICATION
00043 !!    ------------
00044 !!
00045 !!    Original    05/2012 from INI_DATA_PARAM_TEB, separates urban parameters
00046 !!    modified    08/2012 add PROUGH_ROOF, PROUGH_WALL
00047 !----------------------------------------------------------------------------
00048 !
00049 !*    0.     DECLARATION
00050 !            -----------
00051 !
00052 USE MODD_BLD_DESCRIPTION
00053 !
00054 USE MODI_ABOR1_SFX
00055 !
00056 !
00057 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00058 USE PARKIND1  ,ONLY : JPRB
00059 !
00060 IMPLICIT NONE
00061 !
00062 !*    0.1    Declaration of arguments
00063 !            ------------------------
00064 !
00065 INTEGER, DIMENSION(:), INTENT(IN) :: KTYPE
00066 !
00067 !            town parameters
00068 !            ---------------
00069 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0_TOWN
00070 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PALB_ROOF
00071 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PALB_ROAD
00072 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PALB_WALL
00073 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PEMIS_ROOF
00074 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PEMIS_ROAD
00075 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PEMIS_WALL
00076 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PHC_ROOF
00077 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PHC_ROAD
00078 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PHC_WALL
00079 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTC_ROOF
00080 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTC_ROAD
00081 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTC_WALL
00082 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PD_ROOF
00083 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PD_ROAD
00084 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PD_WALL
00085 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PBLD_HEIGHT
00086 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PWALL_O_HOR
00087 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PBLD
00088 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PCAN_HW_RATIO
00089 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PH_TRAFFIC
00090 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLE_TRAFFIC
00091 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PH_INDUSTRY
00092 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLE_INDUSTRY
00093 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PGARDEN
00094 LOGICAL,            INTENT(IN),  OPTIONAL :: OGARDEN
00095 !
00096 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PHC_FLOOR
00097 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTC_FLOOR
00098 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PD_FLOOR
00099 !
00100 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PTCOOL_TARGET
00101 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PTHEAT_TARGET
00102 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PF_WASTE_CAN
00103 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PEFF_HEAT
00104 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PQIN
00105 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PQIN_FRAD
00106 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PSHGC
00107 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PU_WIN
00108 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PGR
00109 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PSHGC_SH
00110 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PFLOOR_HEIGHT
00111 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PINF
00112 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PF_WATER_COND
00113 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PQIN_FLAT
00114 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PHR_TARGET
00115 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PV_VENT
00116 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PCAP_SYS_HEAT
00117 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PCAP_SYS_RAT
00118 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PT_ADP
00119 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PM_SYS_RAT
00120 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PCOP_RAT
00121 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PT_SIZE_MAX
00122 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PT_SIZE_MIN
00123 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PSHADE
00124 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PNATVENT
00125 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PROUGH_ROOF
00126 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PROUGH_WALL
00127 REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL   :: PGREENROOF
00128 !
00129 !*    0.2    Declaration of local variables
00130 !      ------------------------------
00131 !
00132 INTEGER, DIMENSION(:), ALLOCATABLE :: ILIST ! link between urban types and indices
00133 REAL, DIMENSION(SIZE(KTYPE)) :: ZGARDEN
00134 INTEGER            :: JLOOP        ! spatial loop counter
00135 INTEGER            :: JLIST        ! loop counter on urban types
00136 INTEGER            :: IINDEX       ! index of type for each point
00137 !
00138 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00139 !
00140 !-------------------------------------------------------------------------------
00141 !-------------------------------------------------------------------------------
00142 !
00143 IF (LHOOK) CALL DR_HOOK('INI_DATA_PARAM_TEB',0,ZHOOK_HANDLE)
00144 !
00145 !-------------------------------------------------------------------------------
00146 !
00147 !*    1.     Builds the list of indices corresponding to the "type" field
00148 !      ------------------------------------------------------------------
00149 !
00150 !
00151 ALLOCATE(ILIST(MAXVAL(NDESC_CODE_LIST)))
00152 ILIST(:) = 0
00153 DO JLIST=1,NDESC_CODE
00154   ILIST(NDESC_CODE_LIST(JLIST)) = JLIST
00155 END DO
00156 !
00157 IINDEX = 0
00158 !
00159 !-------------------------------------------------------------------------------
00160 DO JLOOP=1,SIZE(KTYPE)
00161 !-------------------------------------------------------------------------------
00162 !
00163 !*    1.     town parameters depending on urban characteristics
00164 !      --------------------------------------------------------
00165 !
00166     IF (KTYPE(JLOOP)<=SIZE(ILIST) .AND. KTYPE(JLOOP)>0) IINDEX = ILIST(KTYPE(JLOOP))
00167 
00168     IF (PRESENT(PZ0_TOWN)) THEN
00169       PZ0_TOWN(JLOOP)=1.   
00170     ENDIF
00171     IF (PRESENT(PBLD_HEIGHT)) THEN
00172       PBLD_HEIGHT(JLOOP)=10.
00173     ENDIF
00174 
00175     ZGARDEN(JLOOP)=0.
00176     IF (PRESENT(OGARDEN)) THEN
00177       IF (.NOT. OGARDEN) ZGARDEN(JLOOP) = 0.
00178     ENDIF
00179     IF (PRESENT(PGARDEN)) THEN
00180       PGARDEN(JLOOP)=ZGARDEN(JLOOP)
00181     ENDIF
00182 
00183     IF (PRESENT(PBLD)) THEN
00184       PBLD(JLOOP)=0.5        
00185       PBLD(JLOOP) = PBLD(JLOOP) / (1. - ZGARDEN(JLOOP))
00186     ENDIF
00187 
00188     IF (PRESENT(PWALL_O_HOR)) THEN
00189       PWALL_O_HOR(JLOOP)=0.5
00190       PWALL_O_HOR(JLOOP) = PWALL_O_HOR(JLOOP) / (1. - ZGARDEN(JLOOP))
00191     ENDIF
00192 
00193     IF (PRESENT(PCAN_HW_RATIO) .AND. PRESENT(PBLD) .AND. PRESENT(PWALL_O_HOR)) THEN
00194       PCAN_HW_RATIO(JLOOP)= 0.5 * PWALL_O_HOR(JLOOP) / (1.-PBLD(JLOOP))
00195     ELSEIF (PRESENT(PCAN_HW_RATIO) .AND. &
00196             (.NOT.PRESENT(PBLD) .OR. .NOT.PRESENT(PWALL_O_HOR)) ) THEN
00197       CALL ABOR1_SFX("INI_DATA_PARAM_TEB: WHEN CALLING WITH CAN_HW_RATIO, BLD AND "// &
00198         "WALL_O_HOR MUST ALSO BE IN ARGUMENTS")
00199     ENDIF
00200 
00201     IF (PRESENT(PH_TRAFFIC)) THEN
00202       PH_TRAFFIC(JLOOP)= 10.
00203     ENDIF
00204 
00205     IF (PRESENT(PLE_TRAFFIC)) THEN
00206      PLE_TRAFFIC(JLOOP)= 0.
00207     ENDIF
00208 
00209     IF (PRESENT(PH_INDUSTRY)) THEN
00210       PH_INDUSTRY(JLOOP)= 5.
00211     ENDIF
00212 
00213     IF (PRESENT(PLE_INDUSTRY)) THEN
00214      PLE_INDUSTRY(JLOOP)= 0.
00215     ENDIF
00216 
00217     IF (PRESENT(PALB_ROAD)) THEN
00218       PALB_ROAD(JLOOP)=XDESC_ALB_ROAD(IINDEX)
00219     ENDIF
00220     IF (PRESENT(PEMIS_ROAD)) THEN
00221       PEMIS_ROAD(JLOOP)=XDESC_EMIS_ROAD(IINDEX)
00222     ENDIF
00223     IF (PRESENT(PHC_ROAD)) THEN
00224       PHC_ROAD(JLOOP,:)= XDESC_HC_ROAD(IINDEX,:)
00225     ENDIF
00226     IF (PRESENT(PTC_ROAD)) THEN
00227       PTC_ROAD(JLOOP,:)= XDESC_TC_ROAD(IINDEX,:)
00228     ENDIF
00229     IF (PRESENT(PD_ROAD)) THEN
00230       PD_ROAD(JLOOP,:)= XDESC_D_ROAD(IINDEX,:)
00231     ENDIF
00232 !
00233 !-------------------------------------------------------------------------------
00234 !
00235 !*    2.     town parameters depending on building descriptions
00236 !      --------------------------------------------------------
00237 !
00238     IF (KTYPE(JLOOP)<=SIZE(ILIST) .AND. KTYPE(JLOOP)>0) IINDEX = ILIST(KTYPE(JLOOP))
00239 !
00240     IF (PRESENT(PALB_ROOF)) THEN
00241       PALB_ROOF(JLOOP)=XDESC_ALB_ROOF(IINDEX)
00242     ENDIF
00243     IF (PRESENT(PALB_WALL)) THEN
00244       PALB_WALL(JLOOP)=XDESC_ALB_WALL(IINDEX)
00245     ENDIF
00246 
00247     IF (PRESENT(PEMIS_ROOF)) THEN
00248       PEMIS_ROOF(JLOOP)=XDESC_EMIS_ROOF(IINDEX)
00249     ENDIF
00250     IF (PRESENT(PEMIS_WALL)) THEN
00251       PEMIS_WALL(JLOOP)=XDESC_EMIS_WALL(IINDEX)
00252     ENDIF
00253 
00254     IF (PRESENT(PHC_ROOF)) THEN
00255       PHC_ROOF(JLOOP,:)= XDESC_HC_ROOF(IINDEX,:)
00256     ENDIF
00257     IF (PRESENT(PHC_WALL)) THEN
00258       PHC_WALL(JLOOP,:)= XDESC_HC_WALL(IINDEX,:)
00259     ENDIF
00260  
00261     IF (PRESENT(PTC_ROOF)) THEN
00262       PTC_ROOF(JLOOP,:)= XDESC_TC_ROOF(IINDEX,:)
00263     ENDIF
00264     IF (PRESENT(PTC_WALL)) THEN
00265       PTC_WALL(JLOOP,:)= XDESC_TC_WALL(IINDEX,:)
00266     ENDIF
00267 
00268     IF (PRESENT(PD_ROOF)) THEN
00269       PD_ROOF(JLOOP,:)= XDESC_D_ROOF(IINDEX,:)
00270     ENDIF
00271     IF (PRESENT(PD_WALL)) THEN
00272       PD_WALL(JLOOP,:)= XDESC_D_WALL(IINDEX,:)
00273     ENDIF
00274 
00275 
00276     IF (PRESENT(PHC_FLOOR)) THEN
00277       PHC_FLOOR(JLOOP,:)= XDESC_HC_FLOOR(IINDEX,:)
00278     ENDIF
00279 
00280     IF (PRESENT(PTC_FLOOR)) THEN
00281       PTC_FLOOR(JLOOP,:)= XDESC_TC_FLOOR(IINDEX,:)
00282     ENDIF
00283 
00284     IF (PRESENT(PD_FLOOR)) THEN
00285       PD_FLOOR(JLOOP,:)= XDESC_D_FLOOR(IINDEX,:)
00286     ENDIF
00287 !
00288     IF (PRESENT(PEFF_HEAT)) THEN
00289       PEFF_HEAT(JLOOP) = XDESC_EFF_HEAT(IINDEX)
00290     ENDIF
00291 !
00292     IF (PRESENT(PSHGC)) THEN
00293       PSHGC(JLOOP) = XDESC_SHGC(IINDEX)
00294     ENDIF
00295 !
00296     IF (PRESENT(PU_WIN)) THEN
00297       PU_WIN(JLOOP) = XDESC_U_WIN(IINDEX)
00298     ENDIF
00299 !
00300     IF (PRESENT(PGR)) THEN
00301       PGR(JLOOP) = XDESC_GR(IINDEX)
00302     ENDIF
00303 
00304     IF (PRESENT(PCOP_RAT)) THEN
00305       PCOP_RAT(JLOOP) = XDESC_COP_RAT(IINDEX)
00306     ENDIF
00307 !
00308     IF (PRESENT(PF_WATER_COND)) THEN
00309       PF_WATER_COND(JLOOP) = XDESC_F_WATER_COND(IINDEX)
00310     ENDIF
00311 !
00312     IF (PRESENT(PF_WASTE_CAN)) THEN
00313       PF_WASTE_CAN(JLOOP) = XDESC_F_WASTE_CAN(IINDEX)
00314     ENDIF
00315 !
00316     IF (PRESENT(PINF)) THEN
00317       PINF(JLOOP) = XDESC_INF(IINDEX)
00318     ENDIF
00319 !
00320     IF (PRESENT(PV_VENT)) THEN
00321       PV_VENT(JLOOP) = XDESC_V_VENT(IINDEX)
00322     ENDIF
00323     !
00324     IF (PRESENT(PGREENROOF)) THEN
00325       PGREENROOF(JLOOP) = XDESC_GREENROOF(IINDEX)
00326     ENDIF
00327 !
00328 !
00329 !-------------------------------------------------------------------------------
00330 !
00331 !*    3.     town parameters depending on building use
00332 !      -----------------------------------------------
00333 !
00334     IF (KTYPE(JLOOP)<=SIZE(NDESC_USE_LIST) .AND. KTYPE(JLOOP)>0) &
00335     IINDEX = NDESC_USE_LIST(KTYPE(JLOOP))
00336 !
00337     IF (PRESENT(PTCOOL_TARGET)) THEN
00338       PTCOOL_TARGET(JLOOP) = XDESC_TCOOL_TARGET(IINDEX)
00339     ENDIF
00340 !  
00341     IF (PRESENT(PTHEAT_TARGET)) THEN
00342       PTHEAT_TARGET(JLOOP) = XDESC_THEAT_TARGET(IINDEX)
00343     ENDIF
00344 !
00345     IF (PRESENT(PQIN)) THEN
00346       PQIN(JLOOP) = XDESC_QIN(IINDEX)
00347     ENDIF
00348 !
00349     IF (PRESENT(PQIN_FLAT)) THEN
00350       PQIN_FLAT(JLOOP) = XDESC_QIN_FLAT(IINDEX)
00351     ENDIF
00352 !
00353     IF (PRESENT(PSHGC_SH)) THEN
00354       PSHGC_SH(JLOOP) = XDESC_SHGC_SH(IINDEX)
00355     ENDIF    
00356     !
00357     IF (PRESENT(PSHADE)) THEN
00358       PSHADE(JLOOP) = XDESC_SHADE(IINDEX)
00359     ENDIF
00360 !
00361     IF (PRESENT(PNATVENT)) THEN
00362       PNATVENT(JLOOP) = XDESC_NATVENT(IINDEX)
00363     ENDIF
00364 
00365 !
00366 !-------------------------------------------------------------------------------
00367 !
00368 !*    4.     town parameters not depending on anything yet
00369 !      ---------------------------------------------------
00370 !
00371     IF (PRESENT(PCAP_SYS_HEAT)) THEN
00372       PCAP_SYS_HEAT(JLOOP) = 100.
00373     ENDIF
00374 !
00375     IF (PRESENT(PCAP_SYS_RAT)) THEN
00376       PCAP_SYS_RAT(JLOOP) = 90.
00377     ENDIF
00378 !
00379     IF (PRESENT(PT_ADP)) THEN
00380       PT_ADP(JLOOP) = 285.66
00381     ENDIF
00382 !
00383     IF (PRESENT(PM_SYS_RAT)) THEN
00384       PM_SYS_RAT(JLOOP) = 0.0067
00385     ENDIF
00386 !
00387     IF (PRESENT(PT_SIZE_MAX)) THEN
00388       PT_SIZE_MAX(JLOOP) = 301.95
00389     ENDIF
00390 !
00391     IF (PRESENT(PT_SIZE_MIN)) THEN
00392       PT_SIZE_MIN(JLOOP) = 268.96
00393     ENDIF
00394 !
00395     IF (PRESENT(PFLOOR_HEIGHT)) THEN
00396       PFLOOR_HEIGHT(JLOOP) = 2.9
00397     ENDIF
00398 !
00399     IF (PRESENT(PQIN_FRAD)) THEN
00400       PQIN_FRAD(JLOOP) = 0.2
00401     ENDIF
00402 !
00403     IF (PRESENT(PHR_TARGET)) THEN
00404       PHR_TARGET(JLOOP) = 0.5
00405     ENDIF
00406 !
00407     IF (PRESENT(PROUGH_ROOF)) THEN
00408       PROUGH_ROOF(JLOOP) = 1.52
00409     ENDIF
00410 !
00411     IF (PRESENT(PROUGH_WALL)) THEN
00412       PROUGH_WALL(JLOOP) = 1.52
00413     ENDIF
00414 
00415 !
00416 END DO
00417 !
00418 DEALLOCATE(ILIST)
00419 !
00420 IF (LHOOK) CALL DR_HOOK('INI_DATA_PARAM_TEB',1,ZHOOK_HANDLE)
00421 !-------------------------------------------------------------------------------
00422 !
00423 END SUBROUTINE INI_DATA_PARAM_TEB