SURFEX v7.3
General documentation of Surfex
|
00001 ! ############################ 00002 SUBROUTINE READ_COVERS_PARAM(KFILE) 00003 ! ############################ 00004 ! 00005 !!**** *READ_COVERS_PARAM* initializes cover-field correspondance arrays 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 !! 00010 !! METHOD 00011 !! ------ 00012 !! 00013 !! 00014 !! EXTERNAL 00015 !! -------- 00016 !! 00017 !! IMPLICIT ARGUMENTS 00018 !! ------------------ 00019 !! 00020 !! REFERENCE 00021 !! --------- 00022 !! 00023 !! AUTHOR 00024 !! ------ 00025 !! 00026 !! S.Faroux Meteo-France 00027 !! 00028 !! MODIFICATION 00029 !! ------------ 00030 !! 00031 !! Original 23/03/11 00032 !---------------------------------------------------------------------------- 00033 ! 00034 !* 0. DECLARATION 00035 ! ----------- 00036 00037 USE MODD_TYPE_DATE_SURF 00038 ! 00039 USE MODD_DATA_COVER, ONLY : XDATA_TOWN, XDATA_NATURE, XDATA_SEA, XDATA_WATER, & 00040 XDATA_VEGTYPE, XDATA_LAI, XDATA_H_TREE, & 00041 XDATA_ROOT_DEPTH, XDATA_GROUND_DEPTH, XDATA_DICE, & 00042 XDATA_LAI_ALL_YEARS, TDATA_SEED, TDATA_REAP, & 00043 XDATA_ALB_SOIL_NIR, XDATA_ALB_SOIL_VIS, & 00044 XDATA_ALB_VEG_NIR, XDATA_ALB_VEG_VIS, & 00045 XDATA_WATSUP, XDATA_IRRIG, & 00046 XDATA_Z0_TOWN, XDATA_BLD_HEIGHT, XDATA_WALL_O_HOR,& 00047 XDATA_BLD, XDATA_GARDEN, & 00048 XDATA_ALB_ROOF, XDATA_ALB_ROAD, XDATA_ALB_WALL, & 00049 XDATA_EMIS_ROOF, XDATA_EMIS_ROAD, XDATA_EMIS_WALL,& 00050 XDATA_HC_ROOF, XDATA_HC_ROAD, XDATA_HC_WALL, & 00051 XDATA_TC_ROOF, XDATA_TC_ROAD, XDATA_TC_WALL, & 00052 XDATA_D_ROOF, XDATA_D_ROAD, XDATA_D_WALL, & 00053 XDATA_H_TRAFFIC, XDATA_LE_TRAFFIC, & 00054 XDATA_H_INDUSTRY, XDATA_LE_INDUSTRY, & 00055 NECO2_START_YEAR, NECO2_END_YEAR 00056 ! 00057 USE MODD_DATA_COVER_PAR, ONLY : NVEGTYPE, JPCOVER, NCOVER_ECO1_END, NCOVER_ECO2_START 00058 ! 00059 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00060 USE PARKIND1 ,ONLY : JPRB 00061 ! 00062 IMPLICIT NONE 00063 ! 00064 !* 0.1 Declaration of arguments 00065 ! ------------------------ 00066 ! 00067 INTEGER, INTENT(IN) :: KFILE 00068 ! 00069 !* 0.2 Declaration of local variables 00070 ! ------------------------------ 00071 ! 00072 INTEGER :: INB_COVER, INB_AN 00073 INTEGER :: ICOVER, IREC 00074 INTEGER :: JCOVER 00075 !CHARACTER(LEN = 255) :: YDIR, YFIL 00076 ! 00077 !* 0.3 Declaration of namelists 00078 ! ------------------------ 00079 ! 00080 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00081 !------------------------------------------------------------------------------- 00082 IF (LHOOK) CALL DR_HOOK('READ_COVERS_PARAM',0,ZHOOK_HANDLE) 00083 ! 00084 !opening of the file 00085 !CALL GET_ENVIRONMENT_VARIABLE('SURFEX_EXPERIMENT',YDIR) 00086 !YDIR = TRIM(YDIR)//'/ecoclimap/' 00087 IF (KFILE==1) THEN 00088 !YFIL = TRIM(YDIR)//'ecoclimapI_covers_param.bin' 00089 !OPEN(41,FILE=TRIM(YFIL),FORM='UNFORMATTED',ACCESS='DIRECT',recl=13*8) 00090 OPEN(41,FILE='ecoclimapI_covers_param.bin',FORM='UNFORMATTED',ACCESS='DIRECT',recl=13*8) 00091 INB_COVER = NCOVER_ECO1_END 00092 INB_AN = 1 00093 ELSEIF (KFILE==2) THEN 00094 !YFIL = TRIM(YDIR)//'ecoclimapII_eu_covers_param.bin' 00095 !OPEN(41,FILE=TRIM(YFIL),FORM='UNFORMATTED',ACCESS='DIRECT',recl=13*8) 00096 OPEN(41,FILE='ecoclimapII_eu_covers_param.bin',FORM='UNFORMATTED',ACCESS='DIRECT',recl=13*8) 00097 INB_COVER = JPCOVER - NCOVER_ECO2_START + 1 00098 INB_AN = NECO2_END_YEAR - NECO2_START_YEAR + 1 00099 ENDIF 00100 ! 00101 IREC=0 00102 DO JCOVER = 1,INB_COVER 00103 IREC = IREC+1 00104 READ(41,REC=IREC) ICOVER 00105 !fractions of tiles 00106 IREC=IREC+1 00107 READ(41,REC=IREC) XDATA_TOWN(ICOVER),XDATA_NATURE(ICOVER),XDATA_WATER(ICOVER),XDATA_SEA(ICOVER) 00108 !natural part 00109 IF (XDATA_NATURE(ICOVER).NE.0.) CALL READ_NATURE 00110 !urban part 00111 IF (XDATA_TOWN(ICOVER).NE.0.) THEN 00112 !main town parameters 00113 IREC=IREC+1 00114 READ(41,REC=IREC) XDATA_Z0_TOWN(ICOVER),XDATA_BLD_HEIGHT(ICOVER),XDATA_WALL_O_HOR(ICOVER),& 00115 XDATA_BLD(ICOVER),XDATA_GARDEN(ICOVER) 00116 !town albedos 00117 IREC=IREC+1 00118 READ(41,rec=IREC) XDATA_ALB_ROOF(ICOVER),XDATA_ALB_ROAD(ICOVER),XDATA_ALB_WALL(ICOVER) 00119 !town emissivities 00120 IREC=IREC+1 00121 READ(41,rec=IREC) XDATA_EMIS_ROOF(ICOVER),XDATA_EMIS_ROAD(ICOVER),XDATA_EMIS_WALL(ICOVER) 00122 !town heat capacity 00123 IREC=IREC+1 00124 READ(41,rec=IREC) XDATA_HC_ROOF(ICOVER,:) 00125 IREC=IREC+1 00126 READ(41,rec=IREC) XDATA_HC_ROAD(ICOVER,:) 00127 IREC=IREC+1 00128 READ(41,rec=IREC) XDATA_HC_WALL(ICOVER,:) 00129 !town thermal conductivity 00130 IREC=IREC+1 00131 READ(41,rec=IREC) XDATA_TC_ROOF(ICOVER,:) 00132 IREC=IREC+1 00133 READ(41,rec=IREC) XDATA_TC_ROAD(ICOVER,:) 00134 IREC=IREC+1 00135 READ(41,rec=IREC) XDATA_TC_WALL(ICOVER,:) 00136 !town depths 00137 IREC=IREC+1 00138 READ(41,rec=IREC) XDATA_D_ROOF(ICOVER,:) 00139 IREC=IREC+1 00140 READ(41,rec=IREC) XDATA_D_ROAD(ICOVER,:) 00141 IREC=IREC+1 00142 READ(41,rec=IREC) XDATA_D_WALL(ICOVER,:) 00143 !traffic and industry fluxes 00144 IREC=IREC+1 00145 READ(41,rec=IREC) XDATA_H_TRAFFIC(ICOVER),XDATA_LE_TRAFFIC(ICOVER),XDATA_H_INDUSTRY(ICOVER),XDATA_LE_INDUSTRY(ICOVER) 00146 IF (XDATA_GARDEN(ICOVER).NE.0. .AND. XDATA_NATURE(ICOVER).EQ.0.) CALL READ_NATURE 00147 ENDIF 00148 ENDDO 00149 CLOSE(41) 00150 ! 00151 IF (LHOOK) CALL DR_HOOK('READ_COVERS_PARAM',1,ZHOOK_HANDLE) 00152 !------------------------------------------------------------------------------ 00153 CONTAINS 00154 ! 00155 SUBROUTINE READ_NATURE 00156 ! 00157 INTEGER :: JVEGTYPE, JLAI 00158 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00159 ! 00160 IF (LHOOK) CALL DR_HOOK('READ_COVERS_PARAM:READ_NATURE',0,ZHOOK_HANDLE) 00161 ! 00162 !fractions of vegtypes 00163 IREC=IREC+1 00164 READ(41,REC=IREC) XDATA_VEGTYPE(ICOVER,:) 00165 ! 00166 !albedos for the soil 00167 IF (KFILE<=2 .AND. XDATA_NATURE(ICOVER)/=0.) THEN 00168 IREC=IREC+1 00169 READ(41,REC=IREC) XDATA_ALB_SOIL_NIR(ICOVER,1:12,1) 00170 IREC=IREC+1 00171 READ(41,REC=IREC) XDATA_ALB_SOIL_NIR(ICOVER,13:24,1) 00172 IREC=IREC+1 00173 READ(41,REC=IREC) XDATA_ALB_SOIL_NIR(ICOVER,25:36,1) 00174 IREC=IREC+1 00175 READ(41,REC=IREC) XDATA_ALB_SOIL_VIS(ICOVER,1:12,1) 00176 IREC=IREC+1 00177 READ(41,REC=IREC) XDATA_ALB_SOIL_VIS(ICOVER,13:24,1) 00178 IREC=IREC+1 00179 READ(41,REC=IREC) XDATA_ALB_SOIL_VIS(ICOVER,25:36,1) 00180 DO JVEGTYPE=2,NVEGTYPE 00181 XDATA_ALB_SOIL_NIR(ICOVER,:,JVEGTYPE) = XDATA_ALB_SOIL_NIR(ICOVER,:,1) 00182 XDATA_ALB_SOIL_VIS(ICOVER,:,JVEGTYPE) = XDATA_ALB_SOIL_VIS(ICOVER,:,1) 00183 ENDDO 00184 ENDIF 00185 ! 00186 DO JVEGTYPE=1,NVEGTYPE 00187 !not null fraction of vegtype 00188 IF (XDATA_VEGTYPE(ICOVER,JVEGTYPE).NE.0.) THEN 00189 !root and soil depths 00190 IREC=IREC+1 00191 READ(41,REC=IREC) XDATA_ROOT_DEPTH(ICOVER,JVEGTYPE), XDATA_GROUND_DEPTH(ICOVER,JVEGTYPE), XDATA_DICE(ICOVER,JVEGTYPE) 00192 IF (JVEGTYPE.GT.3) THEN 00193 !LAI 00194 DO JLAI=1,INB_AN*3 00195 IREC=IREC+1 00196 IF (KFILE==1) THEN 00197 READ(41,REC=IREC) XDATA_LAI(ICOVER,(JLAI-1)*12+1:JLAI*12,JVEGTYPE) 00198 ELSEIF (KFILE==2) THEN 00199 READ(41,REC=IREC) XDATA_LAI_ALL_YEARS(ICOVER,(JLAI-1)*12+1:JLAI*12,JVEGTYPE) 00200 ENDIF 00201 ENDDO 00202 !Heights of trees 00203 IF (JVEGTYPE.LT.7) THEN 00204 IREC=IREC+1 00205 READ(41,REC=IREC) XDATA_H_TREE(ICOVER,JVEGTYPE) 00206 ENDIF 00207 !albedos for the vegetation 00208 IF (KFILE<=2 .AND. XDATA_NATURE(ICOVER)/=0.) THEN 00209 IREC=IREC+1 00210 READ(41,REC=IREC) XDATA_ALB_VEG_NIR(ICOVER,1:12,JVEGTYPE) 00211 IREC=IREC+1 00212 READ(41,REC=IREC) XDATA_ALB_VEG_NIR(ICOVER,13:24,JVEGTYPE) 00213 IREC=IREC+1 00214 READ(41,REC=IREC) XDATA_ALB_VEG_NIR(ICOVER,25:36,JVEGTYPE) 00215 IREC=IREC+1 00216 READ(41,REC=IREC) XDATA_ALB_VEG_VIS(ICOVER,1:12,JVEGTYPE) 00217 IREC=IREC+1 00218 READ(41,REC=IREC) XDATA_ALB_VEG_VIS(ICOVER,13:24,JVEGTYPE) 00219 IREC=IREC+1 00220 READ(41,REC=IREC) XDATA_ALB_VEG_VIS(ICOVER,25:36,JVEGTYPE) 00221 ENDIF 00222 ELSE 00223 !LAI for bare areas 00224 IF (KFILE==1) THEN 00225 XDATA_LAI(ICOVER,:,JVEGTYPE) = 0. 00226 ELSEIF (KFILE==2) THEN 00227 XDATA_LAI_ALL_YEARS(ICOVER,:,JVEGTYPE) = 0. 00228 ENDIF 00229 XDATA_ALB_VEG_NIR(ICOVER,:,JVEGTYPE) = 0.3 00230 XDATA_ALB_VEG_VIS(ICOVER,:,JVEGTYPE) = 0.1 00231 ENDIF 00232 !irrigation 00233 IF (JVEGTYPE.EQ.8 .AND. KFILE.EQ.1 .OR. JVEGTYPE.EQ.9 .AND. KFILE.EQ.2) THEN 00234 IREC=IREC+1 00235 READ(41,REC=IREC) TDATA_SEED(ICOVER,JVEGTYPE)%TDATE%MONTH, TDATA_SEED(ICOVER,JVEGTYPE)%TDATE%DAY, & 00236 TDATA_REAP(ICOVER,JVEGTYPE)%TDATE%MONTH, TDATA_REAP(ICOVER,JVEGTYPE)%TDATE%DAY, & 00237 XDATA_WATSUP(ICOVER,JVEGTYPE),XDATA_IRRIG(ICOVER,JVEGTYPE) 00238 ENDIF 00239 ENDIF 00240 ENDDO 00241 ! 00242 IF (LHOOK) CALL DR_HOOK('READ_COVERS_PARAM:READ_NATURE',1,ZHOOK_HANDLE) 00243 ! 00244 END SUBROUTINE READ_NATURE 00245 ! 00246 END SUBROUTINE READ_COVERS_PARAM