SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_PGD_TEB_n(HPROGRAM) 00003 ! ######################################### 00004 ! 00005 !!**** *READ_PGD_TEB_n* - reads TEB physiographic fields 00006 !! 00007 !! 00008 !! PURPOSE 00009 !! ------- 00010 !! 00011 !!** METHOD 00012 !! ------ 00013 !! 00014 !! EXTERNAL 00015 !! -------- 00016 !! 00017 !! 00018 !! IMPLICIT ARGUMENTS 00019 !! ------------------ 00020 !! 00021 !! REFERENCE 00022 !! --------- 00023 !! 00024 !! 00025 !! AUTHOR 00026 !! ------ 00027 !! V. Masson *Meteo France* 00028 !! 00029 !! MODIFICATIONS 00030 !! ------------- 00031 !! Original 01/2003 00032 !------------------------------------------------------------------------------- 00033 ! 00034 !* 0. DECLARATIONS 00035 ! ------------ 00036 ! 00037 USE MODD_TYPE_DATE_SURF 00038 ! 00039 USE MODD_DATA_COVER_PAR, ONLY : JPCOVER 00040 ! 00041 USE MODD_TEB_n, ONLY : XCOVER, XZS, CBEM, & 00042 NROOF_LAYER, NROAD_LAYER, NWALL_LAYER, & 00043 TTIME, LCOVER, LECOCLIMAP, NTEB_PATCH, & 00044 CBLD_ATYPE, LGARDEN, & 00045 LGREENROOF 00046 USE MODD_BEM_n, ONLY : NFLOOR_LAYER, CCOOL_COIL, CHEAT_COIL, LAUTOSIZE 00047 USE MODD_TEB_GRID_n, ONLY : XLAT, XLON, XMESH_SIZE, CGRID, XGRID_PAR, NDIM 00048 ! 00049 ! 00050 USE MODI_READ_SURF 00051 USE MODI_READ_GRID 00052 USE MODI_READ_LCOVER 00053 USE MODI_READ_PGD_TEB_PAR_n 00054 ! 00055 ! 00056 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00057 USE PARKIND1 ,ONLY : JPRB 00058 ! 00059 USE MODI_GET_TYPE_DIM_n 00060 ! 00061 USE MODI_READ_LECOCLIMAP 00062 ! 00063 IMPLICIT NONE 00064 ! 00065 !* 0.1 Declarations of arguments 00066 ! ------------------------- 00067 ! 00068 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program 00069 ! 00070 !* 0.2 Declarations of local variables 00071 ! ------------------------------- 00072 ! 00073 INTEGER :: IRESP ! Error code after redding 00074 ! 00075 CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read 00076 INTEGER :: IVERSION 00077 INTEGER :: IBUGFIX 00078 ! 00079 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00080 !------------------------------------------------------------------------------- 00081 ! 00082 !* 1D physical dimension 00083 ! 00084 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_N',0,ZHOOK_HANDLE) 00085 YRECFM='SIZE_TOWN' 00086 CALL GET_TYPE_DIM_n('TOWN ',NDIM) 00087 ! 00088 !* 2. Other dimension initializations: 00089 ! -------------------------------- 00090 ! 00091 CALL READ_SURF(HPROGRAM,'VERSION',IVERSION,IRESP) 00092 CALL READ_SURF(HPROGRAM,'BUG',IBUGFIX,IRESP) 00093 ! 00094 !* number of TEB patches 00095 ! 00096 IF (IVERSION<7 .OR. IVERSION==7 .AND. IBUGFIX<=2) THEN 00097 NTEB_PATCH=1 00098 ELSE 00099 YRECFM='TEB_PATCH' 00100 CALL READ_SURF(HPROGRAM,YRECFM,NTEB_PATCH,IRESP) 00101 END IF 00102 ! 00103 !* number of road and roof layers 00104 ! 00105 YRECFM='ROAD_LAYER' 00106 CALL READ_SURF(HPROGRAM,YRECFM,NROAD_LAYER,IRESP) 00107 00108 YRECFM='ROOF_LAYER' 00109 CALL READ_SURF(HPROGRAM,YRECFM,NROOF_LAYER,IRESP) 00110 00111 YRECFM='WALL_LAYER' 00112 CALL READ_SURF(HPROGRAM,YRECFM,NWALL_LAYER,IRESP) 00113 ! 00114 ! 00115 !* type of averaging for Buildings (to allow ascendant compatibility) 00116 !* type of Building Energy Model 00117 ! 00118 IF (IVERSION<7 .OR.( IVERSION==7 .AND. IBUGFIX<=2)) THEN 00119 CBLD_ATYPE='ARI' 00120 CBEM = 'DEF' 00121 ELSE 00122 YRECFM='BLD_ATYPE' 00123 CALL READ_SURF(HPROGRAM,YRECFM,CBLD_ATYPE,IRESP) 00124 YRECFM='BEM' 00125 CALL READ_SURF(HPROGRAM,YRECFM,CBEM,IRESP) 00126 END IF 00127 ! 00128 IF (CBEM=="BEM") THEN 00129 YRECFM='FLOOR_LAYER' 00130 CALL READ_SURF(HPROGRAM,YRECFM,NFLOOR_LAYER,IRESP) 00131 YRECFM='COOL_COIL' 00132 CALL READ_SURF(HPROGRAM,YRECFM,CCOOL_COIL,IRESP) 00133 YRECFM='HEAT_COIL' 00134 CALL READ_SURF(HPROGRAM,YRECFM,CHEAT_COIL,IRESP) 00135 YRECFM='AUTOSIZE' 00136 CALL READ_SURF(HPROGRAM,YRECFM,LAUTOSIZE,IRESP) 00137 ENDIF 00138 ! 00139 !* Case of urban green roofs 00140 ! 00141 IF (LGARDEN) THEN 00142 IF (IVERSION<7 .OR.( IVERSION==7 .AND. IBUGFIX<=2)) THEN 00143 LGREENROOF = .FALSE. 00144 ELSE 00145 YRECFM='LGREENROOF' 00146 CALL READ_SURF(HPROGRAM,YRECFM,LGREENROOF,IRESP) 00147 END IF 00148 ENDIF 00149 ! 00150 ! 00151 !* 3. Physiographic data fields: 00152 ! ------------------------- 00153 ! 00154 !* cover classes 00155 ! 00156 ALLOCATE(LCOVER(JPCOVER)) 00157 CALL READ_LCOVER(HPROGRAM,LCOVER) 00158 ! 00159 ALLOCATE(XCOVER(NDIM,JPCOVER)) 00160 CALL READ_SURF(HPROGRAM,'COVER',XCOVER(:,:),LCOVER,IRESP) 00161 ! 00162 !* orography 00163 ! 00164 ALLOCATE(XZS(NDIM)) 00165 YRECFM='ZS' 00166 CALL READ_SURF(HPROGRAM,YRECFM,XZS(:),IRESP) 00167 ! 00168 ! 00169 !* latitude, longitude 00170 ! 00171 ALLOCATE(XLAT (NDIM)) 00172 ALLOCATE(XLON (NDIM)) 00173 ALLOCATE(XMESH_SIZE(NDIM)) 00174 CALL READ_GRID(HPROGRAM,CGRID,XGRID_PAR,XLAT,XLON,XMESH_SIZE,IRESP) 00175 ! 00176 ! 00177 !------------------------------------------------------------------------------- 00178 ! 00179 !* 4. Physiographic data fields not to be computed by ecoclimap 00180 ! --------------------------------------------------------- 00181 ! 00182 CALL READ_LECOCLIMAP(HPROGRAM,LECOCLIMAP) 00183 ! 00184 CALL READ_PGD_TEB_PAR_n(HPROGRAM,NDIM,'-') 00185 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_N',1,ZHOOK_HANDLE) 00186 ! 00187 ! 00188 !------------------------------------------------------------------------------ 00189 ! 00190 END SUBROUTINE READ_PGD_TEB_n