|
SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_NAM_PGD_GAUSS_INDEX(HPROGRAM,OINDEX_STORE,HINDEX_1KM,HINDEX_10KM, & 00003 HINDEX_100KM,HCOVER,HZS,HCLAY,HSAND,HCTI, & 00004 HPERM,HSOC_TOP,HSOC_SUB, & 00005 OIMP_COVER,OIMP_ZS,OIMP_CLAY,OIMP_SAND, & 00006 OIMP_CTI,OIMP_PERM,OIMP_SOC, & 00007 OUNIF_COVER,OUNIF_ZS,OUNIF_SAND, & 00008 OUNIF_CLAY,OUNIF_CTI,OUNIF_PERM,OUNIF_SOC, & 00009 OSTOP_PGD ) 00010 ! #################################################################################### 00011 !! 00012 !! PURPOSE 00013 !! ------- 00014 !! 00015 !! *READ_NAM_PGD_GAUSS_INDEX* reads namelist for Gauss grid index 00016 !! 00017 !! METHOD 00018 !! ------ 00019 !! 00020 !! EXTERNAL 00021 !! -------- 00022 !! 00023 !! 00024 !! IMPLICIT ARGUMENTS 00025 !! ------------------ 00026 !! 00027 !! 00028 !! REFERENCE 00029 !! --------- 00030 !! 00031 !! AUTHOR 00032 !! ------ 00033 !! 00034 !! B. Decharme Meteo-France 00035 !! 00036 !! MODIFICATION 00037 !! ------------ 00038 !! 00039 !! Original 02/2010 00040 !---------------------------------------------------------------------------- 00041 ! 00042 !* 0. DECLARATION 00043 ! ----------- 00044 ! 00045 USE MODD_SURF_PAR, ONLY : XUNDEF 00046 USE MODD_DATA_COVER_PAR, ONLY : JPCOVER 00047 USE MODD_SURF_ATM_n, ONLY : CNATURE 00048 ! 00049 USE MODI_GET_LUOUT 00050 USE MODI_OPEN_NAMELIST 00051 USE MODI_CLOSE_NAMELIST 00052 ! 00053 USE MODE_POS_SURF 00054 ! 00055 USE MODI_READ_NAM_PGD_COVER 00056 USE MODI_READ_NAM_PGD_OROGRAPHY 00057 ! 00058 ! 00059 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00060 USE PARKIND1 ,ONLY : JPRB 00061 ! 00062 USE MODI_ABOR1_SFX 00063 ! 00064 USE MODI_READ_NAM_PGD_ISBA 00065 IMPLICIT NONE 00066 ! 00067 !* 0.1 Declaration of dummy arguments 00068 ! ------------------------------ 00069 ! 00070 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM 00071 LOGICAL, INTENT(OUT) :: OINDEX_STORE 00072 CHARACTER(LEN=28), INTENT(OUT) :: HINDEX_1KM 00073 CHARACTER(LEN=28), INTENT(OUT) :: HINDEX_10KM 00074 CHARACTER(LEN=28), INTENT(OUT) :: HINDEX_100KM 00075 CHARACTER(LEN=28), INTENT(OUT) :: HCOVER 00076 CHARACTER(LEN=28), INTENT(OUT) :: HZS 00077 CHARACTER(LEN=28), INTENT(OUT) :: HCLAY 00078 CHARACTER(LEN=28), INTENT(OUT) :: HSAND 00079 CHARACTER(LEN=28), INTENT(OUT) :: HCTI 00080 CHARACTER(LEN=28), INTENT(OUT) :: HPERM 00081 CHARACTER(LEN=28), INTENT(OUT) :: HSOC_TOP 00082 CHARACTER(LEN=28), INTENT(OUT) :: HSOC_SUB 00083 LOGICAL, INTENT(OUT) :: OIMP_COVER 00084 LOGICAL, INTENT(OUT) :: OIMP_ZS 00085 LOGICAL, INTENT(OUT) :: OIMP_CLAY 00086 LOGICAL, INTENT(OUT) :: OIMP_SAND 00087 LOGICAL, INTENT(OUT) :: OIMP_CTI 00088 LOGICAL, INTENT(OUT) :: OIMP_PERM 00089 LOGICAL, INTENT(OUT) :: OIMP_SOC 00090 LOGICAL, INTENT(OUT) :: OUNIF_COVER 00091 LOGICAL, INTENT(OUT) :: OUNIF_ZS 00092 LOGICAL, INTENT(OUT) :: OUNIF_SAND 00093 LOGICAL, INTENT(OUT) :: OUNIF_CLAY 00094 LOGICAL, INTENT(OUT) :: OUNIF_CTI 00095 LOGICAL, INTENT(OUT) :: OUNIF_PERM 00096 LOGICAL, INTENT(OUT) :: OUNIF_SOC 00097 LOGICAL, INTENT(OUT) :: OSTOP_PGD 00098 ! 00099 ! 00100 !* 0.2 Declaration of local variables 00101 ! ------------------------------ 00102 ! 00103 INTEGER :: ILUOUT ! output listing logical unit 00104 INTEGER :: ILUNAM ! namelist file logical unit 00105 LOGICAL :: GFOUND ! flag when namelist is present 00106 ! 00107 !* 0.3 Declaration of cover namelist 00108 ! ----------------------------- 00109 ! 00110 REAL, DIMENSION(JPCOVER) :: XUNIF_COVER ! value of each cover (cover will be 00111 ! uniform on the horizontal) 00112 CHARACTER(LEN=28) :: YCOVER ! file name for cover types 00113 CHARACTER(LEN=6) :: YCOVERFILETYPE ! data file type 00114 REAL :: XRM_COVER ! limit of coverage under which the 00115 ! cover is removed. Default is 1.E-6 00116 REAL :: XRM_COAST ! limit of coast coverage under which 00117 ! the coast is replaced by sea or 00118 ! inland water. Default is 1. 00119 REAL :: XRM_LAKE ! limit of inland lake coverage under which 00120 ! the water is removed. Default is 0.0 00121 REAL :: XRM_SEA ! limit of sea coverage under which 00122 ! the sea is removed. Default is 0.0 00123 LOGICAL :: LORCA_GRID ! flag to compatibility between Surfex and Orca grid 00124 ! (Earth Model over Antarctic) 00125 REAL :: XLAT_ANT ! Lattitude limit from Orca grid (Antartic) 00126 LOGICAL :: LIMP_COVER ! Imposed values for Cover from another PGD file 00127 ! 00128 !* 0.4 Declaration of orography namelist 00129 ! --------------------------------- 00130 ! 00131 CHARACTER(LEN=28) :: YZS ! file name for orography 00132 CHARACTER(LEN=6) :: YZSFILETYPE ! data file type 00133 REAL :: XUNIF_ZS ! uniform orography 00134 CHARACTER(LEN=3) :: COROGTYPE ! orogpraphy type 00135 REAL :: XENV ! parameter for enveloppe orography: 00136 LOGICAL :: LIMP_ZS ! Imposed orography from another PGD file 00137 ! 00138 !* 0.5 Declaration of Nature namelist 00139 ! ------------------------------ 00140 ! 00141 INTEGER :: NPATCH ! number of patches 00142 INTEGER :: NGROUND_LAYER ! number of soil layers 00143 CHARACTER(LEN=3) :: CISBA ! ISBA option 00144 CHARACTER(LEN=4) :: CPEDOTF ! 00145 CHARACTER(LEN=3) :: CPHOTO ! photosynthesis option 00146 LOGICAL :: GTR_ML ! new radiative transfert 00147 REAL :: ZRM_PATCH ! threshold to remove little fractions of patches 00148 CHARACTER(LEN=28) :: YSAND ! file name for sand fraction 00149 CHARACTER(LEN=28) :: YCLAY ! file name for clay fraction 00150 CHARACTER(LEN=28) :: YCTI ! file name for topographic index 00151 CHARACTER(LEN=28) :: YPERM ! file name for permafrost distribution 00152 CHARACTER(LEN=28) :: YRUNOFFB ! file name for runoffb parameter 00153 CHARACTER(LEN=28) :: YWDRAIN ! file name for wdrain parameter 00154 CHARACTER(LEN=28) :: YSOC_TOP ! file name for organic carbon 00155 CHARACTER(LEN=28) :: YSOC_SUB ! file name for organic carbon 00156 CHARACTER(LEN=6) :: YSANDFILETYPE ! sand data file type 00157 CHARACTER(LEN=6) :: YCLAYFILETYPE ! clay data file type 00158 CHARACTER(LEN=6) :: YCTIFILETYPE ! topographic index data file type 00159 CHARACTER(LEN=6) :: YPERMFILETYPE ! permafrost distribution data file type 00160 CHARACTER(LEN=6) :: YRUNOFFBFILETYPE ! subgrid runoff data file type 00161 CHARACTER(LEN=6) :: YWDRAINFILETYPE ! subgrid drainage data file type 00162 CHARACTER(LEN=6) :: YSOCFILETYPE ! organic carbon data file type 00163 LOGICAL :: LIMP_SAND ! Imposed maps of Sand from another PGD file 00164 LOGICAL :: LIMP_CLAY ! Imposed maps of Clay from another PGD file 00165 LOGICAL :: LIMP_CTI ! Imposed values for topographic index statistics from another PGD file 00166 LOGICAL :: LIMP_PERM ! Imposed maps of permafrost distribution 00167 LOGICAL :: LIMP_SOC ! Imposed maps of organic carbon 00168 REAL :: XUNIF_SAND ! uniform value of sand fraction 00169 REAL :: XUNIF_CLAY ! uniform value of clay fraction 00170 REAL :: XUNIF_RUNOFFB ! uniform value of subgrid runoff coefficient 00171 REAL :: XUNIF_WDRAIN ! uniform value of subgrid drainage coefficient 00172 REAL :: XUNIF_PERM ! uniform value of permafrost distribution 00173 REAL :: XUNIF_SOC_TOP ! uniform value of organic carbon top soil (kg/m2) 00174 REAL :: XUNIF_SOC_SUB ! uniform value of organic carbon sub soil (kg/m2) 00175 REAL, DIMENSION(150) :: ZSOILGRID ! Soil layer thickness for DIF 00176 ! 00177 ! NO flux 00178 ! 00179 CHARACTER(LEN=28) :: YPH ! file name for pH 00180 CHARACTER(LEN=28) :: YFERT ! file name for fertilisation rate 00181 CHARACTER(LEN=6) :: YPHFILETYPE ! pH data file type 00182 CHARACTER(LEN=6) :: YFERTFILETYPE ! fertilisation data file type 00183 REAL :: XUNIF_PH ! uniform value of pH 00184 REAL :: XUNIF_FERT ! uniform value of fertilisation rate 00185 ! 00186 !* 0.6 Declaration of gauss namelist 00187 ! ----------------------------- 00188 ! 00189 LOGICAL :: LINDEX_STORE 00190 LOGICAL :: LSTOP_PGD 00191 ! 00192 CHARACTER(LEN=28) :: YINDEX_1KM ! file name for gauss index at 1km 00193 CHARACTER(LEN=28) :: YINDEX_10KM ! file name for gauss index at 10km 00194 CHARACTER(LEN=28) :: YINDEX_100KM ! file name for gauss index at 100km 00195 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00196 ! 00197 NAMELIST/NAM_GAUSS_INDEX/ LINDEX_STORE, LSTOP_PGD, YINDEX_1KM, YINDEX_10KM, YINDEX_100KM 00198 ! 00199 !--------------------------------------------------------------- 00200 ! 00201 !* 1. Initializations 00202 ! --------------- 00203 ! 00204 IF (LHOOK) CALL DR_HOOK('READ_NAM_PGD_GAUSS_INDEX',0,ZHOOK_HANDLE) 00205 LINDEX_STORE = .TRUE. 00206 LSTOP_PGD = .FALSE. 00207 ! 00208 YINDEX_1KM = ' ' 00209 YINDEX_10KM = ' ' 00210 YINDEX_100KM = ' ' 00211 ! 00212 XUNIF_COVER(:) = XUNDEF 00213 ! 00214 CALL GET_LUOUT(HPROGRAM,ILUOUT) 00215 ! 00216 !------------------------------------------------------------------------------- 00217 ! 00218 !* 2. Read gauss index namelists 00219 ! -------------------------- 00220 ! 00221 CALL OPEN_NAMELIST(HPROGRAM,ILUNAM) 00222 ! 00223 CALL POSNAM(ILUNAM,'NAM_GAUSS_INDEX',GFOUND,ILUOUT) 00224 IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_GAUSS_INDEX) 00225 ! 00226 CALL CLOSE_NAMELIST(HPROGRAM,ILUNAM) 00227 ! 00228 !------------------------------------------------------------------------------- 00229 ! 00230 !* 3. Read all namelists 00231 ! ------------------ 00232 ! 00233 ! Cover 00234 ! 00235 CALL READ_NAM_PGD_COVER(HPROGRAM, YCOVER, YCOVERFILETYPE, XUNIF_COVER, & 00236 XRM_COVER, XRM_COAST, XRM_LAKE, XRM_SEA, & 00237 LORCA_GRID, XLAT_ANT, LIMP_COVER ) 00238 ! 00239 ! Orography 00240 ! 00241 CALL READ_NAM_PGD_OROGRAPHY(HPROGRAM, YZS, YZSFILETYPE, XUNIF_ZS, & 00242 COROGTYPE, XENV, LIMP_ZS ) 00243 ! 00244 ! Nature field 00245 ! 00246 IF(CNATURE=='ISBA')THEN 00247 ! 00248 CALL READ_NAM_PGD_ISBA(HPROGRAM, NPATCH, NGROUND_LAYER, CISBA, CPEDOTF, & 00249 CPHOTO, GTR_ML, ZRM_PATCH, & 00250 YCLAY, YCLAYFILETYPE, XUNIF_CLAY, LIMP_CLAY, & 00251 YSAND, YSANDFILETYPE, XUNIF_SAND, LIMP_SAND, & 00252 YSOC_TOP, YSOC_SUB, YSOCFILETYPE, XUNIF_SOC_TOP, & 00253 XUNIF_SOC_SUB, LIMP_SOC, YCTI, YCTIFILETYPE, LIMP_CTI, & 00254 YPERM, YPERMFILETYPE, XUNIF_PERM, LIMP_PERM, & 00255 YRUNOFFB, YRUNOFFBFILETYPE, XUNIF_RUNOFFB, & 00256 YWDRAIN, YWDRAINFILETYPE , XUNIF_WDRAIN, ZSOILGRID, & 00257 YPH, YPHFILETYPE, XUNIF_PH, YFERT, YFERTFILETYPE, & 00258 XUNIF_FERT ) 00259 ! 00260 ENDIF 00261 ! 00262 !------------------------------------------------------------------------------- 00263 ! 00264 OINDEX_STORE = LINDEX_STORE 00265 HINDEX_1KM = YINDEX_1KM 00266 HINDEX_10KM = YINDEX_10KM 00267 HINDEX_100KM = YINDEX_100KM 00268 OSTOP_PGD = LSTOP_PGD 00269 ! 00270 IF(LSTOP_PGD.AND..NOT.OINDEX_STORE)THEN 00271 WRITE(ILUOUT,*) ' ' 00272 WRITE(ILUOUT,*) '***********************************************************' 00273 WRITE(ILUOUT,*) '* Error in READ_NAM_PGD_GAUSS_INDEX *' 00274 WRITE(ILUOUT,*) '* IF LSTOP_PGD, LINDEX_STORE must be True (default) *' 00275 WRITE(ILUOUT,*) '***********************************************************' 00276 WRITE(ILUOUT,*) ' ' 00277 CALL ABOR1_SFX('READ_NAM_PGD_GAUSS_INDEX: IF LSTOP_PGD, LINDEX_STORE must be True') 00278 ENDIF 00279 ! 00280 GFOUND=(LEN_TRIM(YINDEX_1KM)/=0.OR.LEN_TRIM(YINDEX_10KM)/=0.OR.LEN_TRIM(YINDEX_100KM)/=0) 00281 ! 00282 IF(LSTOP_PGD.AND.GFOUND)THEN 00283 WRITE(ILUOUT,*) ' ' 00284 WRITE(ILUOUT,*) '***************************************************************' 00285 WRITE(ILUOUT,*) '* Error in READ_NAM_PGD_GAUSS_INDEX *' 00286 WRITE(ILUOUT,*) '* IF file index is defined, LSTOP_PGD must be false (default) *' 00287 WRITE(ILUOUT,*) '***************************************************************' 00288 WRITE(ILUOUT,*) ' ' 00289 CALL ABOR1_SFX('READ_NAM_PGD_GAUSS_INDEX: IF YINDEX, LSTOP_PGD must be false') 00290 ENDIF 00291 ! 00292 HCOVER = YCOVER 00293 HZS = YZS 00294 HCLAY = YCLAY 00295 HSAND = YSAND 00296 HCTI = YCTI 00297 HPERM = YPERM 00298 HSOC_TOP = YSOC_TOP 00299 HSOC_SUB = YSOC_SUB 00300 ! 00301 OIMP_COVER = LIMP_COVER 00302 OIMP_ZS = LIMP_ZS 00303 OIMP_CLAY = LIMP_CLAY 00304 OIMP_SAND = LIMP_SAND 00305 OIMP_CTI = LIMP_CTI 00306 OIMP_PERM = LIMP_PERM 00307 OIMP_SOC = LIMP_SOC 00308 ! 00309 OUNIF_COVER = (ANY(XUNIF_COVER/=0.)) 00310 OUNIF_ZS = (XUNIF_ZS/=XUNDEF) 00311 OUNIF_SAND = (XUNIF_SAND/=XUNDEF) 00312 OUNIF_CLAY = (XUNIF_CLAY/=XUNDEF) 00313 OUNIF_CTI = (LEN_TRIM(YCTI)==0) 00314 OUNIF_PERM = (XUNIF_PERM/=XUNDEF) 00315 OUNIF_SOC = (XUNIF_SOC_TOP/=XUNDEF.AND.XUNIF_SOC_TOP/=XUNDEF) 00316 ! 00317 IF (LHOOK) CALL DR_HOOK('READ_NAM_PGD_GAUSS_INDEX',1,ZHOOK_HANDLE) 00318 ! 00319 !------------------------------------------------------------------------------- 00320 ! 00321 END SUBROUTINE READ_NAM_PGD_GAUSS_INDEX
1.8.0