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