SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_PREP_FLAKE_CONF(HPROGRAM,HVAR,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,& 00003 HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,KLUOUT,OUNIF) 00004 ! ####################################################### 00005 ! 00006 !!**** *READ_PREP_FLAKE_CONF* - routine to read the configuration for 00007 !! FLAKE fields preparation 00008 !! 00009 !! PURPOSE 00010 !! ------- 00011 !! 00012 !!** METHOD 00013 !! ------ 00014 !! 00015 !! EXTERNAL 00016 !! -------- 00017 !! 00018 !! 00019 !! IMPLICIT ARGUMENTS 00020 !! ------------------ 00021 !! 00022 !! REFERENCE 00023 !! --------- 00024 !! 00025 !! 00026 !! AUTHOR 00027 !! ------ 00028 !! V. Masson *Meteo France* 00029 !! 00030 !! MODIFICATIONS 00031 !! ------------- 00032 !! Original 01/2004 00033 !! P. Le Moigne 10/2005, Phasage Arome 00034 !------------------------------------------------------------------------------- 00035 ! 00036 !* 0. DECLARATIONS 00037 ! ------------ 00038 ! 00039 USE MODI_READ_PREP_SURF_ATM_CONF 00040 ! 00041 USE MODN_PREP_FLAKE 00042 USE MODD_PREP_FLAKE, ONLY : CFILE_FLAKE, CFILEPGD_FLAKE, CTYPE, CTYPEPGD, & 00043 XTS_UNIF, & 00044 XUNIF_T_SNOW, & 00045 XUNIF_T_ICE, & 00046 XUNIF_T_MNW, & 00047 XUNIF_T_WML, & 00048 XUNIF_T_BOT, & 00049 XUNIF_T_B1, & 00050 XUNIF_CT, & 00051 XUNIF_H_SNOW, & 00052 XUNIF_H_ICE, & 00053 XUNIF_H_ML, & 00054 XUNIF_H_B1, & 00055 LCLIM_LAKE 00056 ! 00057 ! 00058 USE MODD_FLAKE_n, ONLY : XTS ! to use as flag 00059 ! 00060 USE MODD_SURF_PAR, ONLY : XUNDEF 00061 ! 00062 ! 00063 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00064 USE PARKIND1 ,ONLY : JPRB 00065 ! 00066 USE MODI_ABOR1_SFX 00067 ! 00068 IMPLICIT NONE 00069 ! 00070 !* 0.1 Declarations of arguments 00071 ! ------------------------- 00072 ! 00073 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling ISBA 00074 CHARACTER(LEN=7), INTENT(IN) :: HVAR ! variable treated 00075 CHARACTER(LEN=28), INTENT(OUT) :: HFILE ! file name 00076 CHARACTER(LEN=6), INTENT(OUT) :: HFILETYPE! file type 00077 CHARACTER(LEN=28), INTENT(OUT) :: HFILEPGD ! file name 00078 CHARACTER(LEN=6), INTENT(OUT) :: HFILEPGDTYPE! file type 00079 CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name 00080 CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type 00081 CHARACTER(LEN=28), INTENT(IN) :: HPGDFILE ! atmospheric file name 00082 CHARACTER(LEN=6), INTENT(IN) :: HPGDFILETYPE! atmospheric file type 00083 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing 00084 LOGICAL, INTENT(OUT) :: OUNIF ! flag for prescribed uniform field 00085 00086 ! 00087 !* 0.2 Declarations of local variables 00088 ! ------------------------------- 00089 ! 00090 INTEGER :: IRESP ! IRESP : return-code if a problem appears 00091 ! at the open of the file in LFI routines 00092 INTEGER :: ILUNAM ! Logical unit of namelist file 00093 ! 00094 CHARACTER(LEN=28) :: YNAMELIST ! namelist file 00095 ! 00096 LOGICAL :: GFOUND ! Return code when searching namelist 00097 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00098 !------------------------------------------------------------------------------- 00099 ! 00100 ! 00101 IF (LHOOK) CALL DR_HOOK('READ_PREP_FLAKE_CONF',0,ZHOOK_HANDLE) 00102 HFILE = ' ' 00103 HFILETYPE = ' ' 00104 ! 00105 HFILEPGD = ' ' 00106 HFILEPGDTYPE = ' ' 00107 ! 00108 OUNIF = .FALSE. 00109 ! 00110 !------------------------------------------------------------------------------- 00111 ! 00112 !* choice of input file 00113 ! -------------------- 00114 ! 00115 IF (LEN_TRIM(HFILE)==0 .AND. LEN_TRIM(CFILE_FLAKE)>0 .AND. LEN_TRIM(CTYPE)>0) THEN 00116 HFILE = CFILE_FLAKE 00117 HFILETYPE = CTYPE 00118 END IF 00119 ! 00120 IF (LEN_TRIM(HFILEPGD)==0 .AND. LEN_TRIM(CFILEPGD_FLAKE)>0 .AND. LEN_TRIM(CTYPEPGD)>0) THEN 00121 HFILEPGD = CFILEPGD_FLAKE 00122 HFILEPGDTYPE = CTYPEPGD 00123 END IF 00124 ! 00125 !! If no file name in the scheme namelist, 00126 !! try to find a name in NAM_SURF_ATM 00127 ! 00128 IF (LEN_TRIM(HFILE)==0) THEN 00129 ! 00130 CALL READ_PREP_SURF_ATM_CONF(HPROGRAM,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,& 00131 HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,KLUOUT) 00132 ! 00133 END IF 00134 !------------------------------------------------------------------------------- 00135 ! 00136 !* Is an uniform field prescribed? 00137 ! ------------------------------ 00138 SELECT CASE (HVAR) 00139 CASE('TS ') 00140 OUNIF = (XTS_UNIF/=XUNDEF) 00141 CASE('T_SNOW ') 00142 OUNIF = (XUNIF_T_SNOW/=XUNDEF) 00143 IF (HFILETYPE=='GRIB '.OR.HFILETYPE=='ASCLLV') THEN ! all fields but TS 00144 HFILE = ' ' ! are not readed 00145 HFILETYPE = ' ' ! from grib files 00146 END IF 00147 CASE('T_ICE ') 00148 OUNIF = (XUNIF_T_ICE/=XUNDEF) 00149 IF (HFILETYPE=='GRIB '.OR.HFILETYPE=='ASCLLV') THEN 00150 HFILE = ' ' 00151 HFILETYPE = ' ' 00152 END IF 00153 CASE('T_MNW ') 00154 OUNIF = .FALSE. 00155 IF (HFILETYPE=='GRIB '.OR.HFILETYPE=='ASCLLV') THEN 00156 HFILE = ' ' 00157 HFILETYPE = ' ' 00158 END IF 00159 CASE('T_WML ') 00160 OUNIF = (XUNIF_T_WML/=XUNDEF) 00161 HFILE = ' ' 00162 HFILETYPE = ' ' 00163 CASE('T_BOT ') 00164 OUNIF = (XUNIF_T_BOT/=XUNDEF) 00165 IF (HFILETYPE=='GRIB '.OR.HFILETYPE=='ASCLLV') THEN 00166 HFILE = ' ' 00167 HFILETYPE = ' ' 00168 END IF 00169 CASE('T_B1 ') 00170 OUNIF = (XUNIF_T_B1/=XUNDEF) 00171 IF (HFILETYPE=='GRIB '.OR.HFILETYPE=='ASCLLV') THEN 00172 HFILE = ' ' 00173 HFILETYPE = ' ' 00174 END IF 00175 CASE('CT ') 00176 OUNIF = (XUNIF_CT/=XUNDEF) 00177 IF (HFILETYPE=='GRIB '.OR.HFILETYPE=='ASCLLV') THEN 00178 HFILE = ' ' 00179 HFILETYPE = ' ' 00180 END IF 00181 CASE('H_SNOW ') 00182 OUNIF = (XUNIF_H_SNOW/=XUNDEF) 00183 IF (HFILETYPE=='GRIB '.OR.HFILETYPE=='ASCLLV') THEN 00184 HFILE = ' ' 00185 HFILETYPE = ' ' 00186 END IF 00187 CASE('H_ICE ') 00188 OUNIF = (XUNIF_H_ICE/=XUNDEF) 00189 IF (HFILETYPE=='GRIB '.OR.HFILETYPE=='ASCLLV') THEN 00190 HFILE = ' ' 00191 HFILETYPE = ' ' 00192 END IF 00193 CASE('H_ML ') 00194 IF (HFILETYPE=='GRIB '.OR.HFILETYPE=='ASCLLV') THEN 00195 HFILE = ' ' 00196 HFILETYPE = ' ' 00197 END IF 00198 OUNIF = (XUNIF_H_ML/=XUNDEF) 00199 CASE('H_B1 ') 00200 OUNIF = (XUNIF_H_B1/=XUNDEF) 00201 IF (HFILETYPE=='GRIB '.OR.HFILETYPE=='ASCLLV') THEN 00202 HFILE = ' ' 00203 HFILETYPE = ' ' 00204 END IF 00205 END SELECT 00206 ! 00207 ! 00208 !------------------------------------------------------------------------------- 00209 ! 00210 !* If no file and no uniform field is prescribed: default values used 00211 ! --------------------------------------------- 00212 ! 00213 IF (LEN_TRIM(HFILETYPE)==0 .AND. .NOT. OUNIF) THEN 00214 SELECT CASE (HVAR) 00215 CASE ('ZS ') 00216 OUNIF = .TRUE. 00217 IF (LHOOK) CALL DR_HOOK('READ_PREP_FLAKE_CONF',1,ZHOOK_HANDLE) 00218 RETURN 00219 CASE ('DATE ') 00220 IF (LHOOK) CALL DR_HOOK('READ_PREP_FLAKE_CONF',1,ZHOOK_HANDLE) 00221 RETURN 00222 CASE('TS ') ! an input file or a uniform value must be given for TS 00223 CALL ABOR1_SFX('READ_PREP_FLAKE_CONF: AN INPUT FILE OR A UNIFORM PRESCRIBED TS REQUIRED') 00224 END SELECT 00225 END IF 00226 IF (LHOOK) CALL DR_HOOK('READ_PREP_FLAKE_CONF',1,ZHOOK_HANDLE) 00227 ! 00228 ! 00229 !------------------------------------------------------------------------------- 00230 ! 00231 END SUBROUTINE READ_PREP_FLAKE_CONF