|
SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_TEB_DATE(HPROGRAM,HINIT,KLUOUT,HATMFILE,HATMFILETYPE,& 00003 KYEAR,KMONTH,KDAY,PTIME,TPTIME) 00004 ! ####################################################### 00005 ! 00006 !!**** *READ_TEB_DATE* - routine to initialise de date TTIME of MODD_TEB 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 !! S.Malardel *Meteo France* 00028 !! 00029 !! MODIFICATIONS 00030 !! ------------- 00031 !! Original 01/2004 00032 !! P. Le Moigne 10/2005, Phasage Arome 00033 !------------------------------------------------------------------------------- 00034 ! 00035 !* 0. DECLARATIONS 00036 ! ------------ 00037 ! 00038 USE MODD_TYPE_DATE_SURF 00039 USE MODD_SURF_PAR, ONLY : NUNDEF, XUNDEF 00040 ! 00041 USE MODI_READ_PREP_TEB_DATE_CONF 00042 USE MODI_READ_PRE_SURFA_DAT_CONF 00043 USE MODI_READ_PREP_TEB_CONF 00044 USE MODI_READ_PREP_FILE_DATE 00045 ! 00046 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00047 USE PARKIND1 ,ONLY : JPRB 00048 ! 00049 USE MODI_ABOR1_SFX 00050 ! 00051 IMPLICIT NONE 00052 ! 00053 !* 0.1 Declarations of arguments 00054 ! ------------------------- 00055 ! 00056 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling 00057 CHARACTER(LEN=3), INTENT(IN) :: HINIT ! fields to initialize 'ALL', 'PRE', 'PGD' 00058 CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name 00059 CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type 00060 INTEGER, INTENT(IN) :: KYEAR ! current year (UTC) 00061 INTEGER, INTENT(IN) :: KMONTH ! current month (UTC) 00062 INTEGER, INTENT(IN) :: KDAY ! current day (UTC) 00063 REAL, INTENT(IN) :: PTIME ! current time since midnight (UTC, s) 00064 TYPE (DATE_TIME), INTENT(OUT) ::TPTIME ! time and date 00065 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing 00066 ! 00067 ! 00068 !* 0.2 Declarations of local variables 00069 ! ------------------------------- 00070 ! 00071 CHARACTER(LEN=28) :: YFILE ! file name 00072 CHARACTER(LEN=6) :: YFILETYPE ! file type 00073 CHARACTER(LEN=28) :: YFILEPGD ! file name 00074 CHARACTER(LEN=6) :: YFILEPGDTYPE ! file type 00075 CHARACTER(LEN=28) :: YFILEPGDIN ! file name 00076 CHARACTER(LEN=6) :: YFILEPGDINTYPE ! file type 00077 ! 00078 LOGICAL :: GUNIF ! flag for prescribed uniform field 00079 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00080 ! 00081 !------------------------------------------------------------------------------- 00082 ! 00083 IF (LHOOK) CALL DR_HOOK('READ_TEB_DATE',0,ZHOOK_HANDLE) 00084 YFILE = ' ' 00085 YFILETYPE = ' ' 00086 ! 00087 YFILEPGDIN = ' ' 00088 YFILEPGDINTYPE = ' ' 00089 ! 00090 !------------------------------------------------------------------------------- 00091 ! 00092 !* look for a date in the namelist NAM_PREP_TEB or NAM_PREP_SURF_ATM 00093 !------------------------------------------------------------------- 00094 ! 00095 CALL READ_PREP_TEB_DATE_CONF(HPROGRAM,KLUOUT,TPTIME) 00096 ! 00097 IF (TPTIME%TDATE%YEAR==NUNDEF.OR.TPTIME%TDATE%MONTH==NUNDEF & 00098 .OR.TPTIME%TDATE%DAY==NUNDEF.OR.TPTIME%TIME==XUNDEF) THEN 00099 CALL READ_PRE_SURFA_DAT_CONF(HPROGRAM,KLUOUT,TPTIME) 00100 END IF 00101 ! 00102 !* If no date in the namelist, look for a file 00103 ! --------------- 00104 ! 00105 IF (TPTIME%TDATE%YEAR==NUNDEF.OR.TPTIME%TDATE%MONTH==NUNDEF & 00106 .OR.TPTIME%TDATE%DAY==NUNDEF.OR.TPTIME%TIME==XUNDEF) THEN 00107 ! 00108 CALL READ_PREP_TEB_CONF(HPROGRAM,'DATE ',YFILE,YFILETYPE,YFILEPGD,YFILEPGDTYPE,& 00109 HATMFILE,HATMFILETYPE,YFILEPGDIN,YFILEPGDINTYPE,KLUOUT,GUNIF) 00110 ! 00111 IF (LEN_TRIM(YFILETYPE)/=0) THEN 00112 CALL READ_PREP_FILE_DATE(HPROGRAM,YFILE,YFILETYPE,TPTIME,KLUOUT) 00113 END IF 00114 ! 00115 END IF 00116 ! 00117 !* If no file and no date in the namelist, test if atmospheric date 00118 !------------------------------------------------------------------ 00119 ! 00120 IF (LEN_TRIM(YFILE)==0 .AND. (TPTIME%TDATE%YEAR==NUNDEF.OR.TPTIME%TDATE%MONTH==NUNDEF & 00121 .OR.TPTIME%TDATE%DAY==NUNDEF.OR.TPTIME%TIME==XUNDEF)) THEN 00122 ! 00123 IF (KYEAR /= NUNDEF .AND. KMONTH /= NUNDEF .AND. KDAY /= NUNDEF .AND. PTIME /= XUNDEF) THEN 00124 TPTIME%TDATE%YEAR = KYEAR 00125 TPTIME%TDATE%MONTH= KMONTH 00126 TPTIME%TDATE%DAY = KDAY 00127 TPTIME%TIME = PTIME 00128 ELSE 00129 ! 00130 !* If no file, no date in the namelist and no atmospheric date : stop 00131 !----------------------------------------------------------------------- 00132 ! 00133 CALL ABOR1_SFX('READ_TEB_DATE: DATE NOT SET') 00134 END IF 00135 ENDIF 00136 ! 00137 !* Test of date coherence? 00138 !------------------------ 00139 ! 00140 IF (KYEAR /= NUNDEF .AND. KMONTH /= NUNDEF .AND. KDAY /= NUNDEF .AND. PTIME /= XUNDEF) THEN 00141 IF (KYEAR /= TPTIME%TDATE%YEAR .OR. KMONTH /= TPTIME%TDATE%MONTH .OR. KDAY /= TPTIME%TDATE%DAY .AND. PTIME /= TPTIME%TIME) THEN 00142 WRITE(UNIT=KLUOUT, FMT=*)'WARNING in READ_TEB_DATE' 00143 WRITE(UNIT=KLUOUT, FMT=*)'ATMOSPHERIC AND SURFACE DATES ARE NOT THE SAME' 00144 WRITE(UNIT=KLUOUT, FMT=*)'ATMOSPHERIC DATE:' 00145 WRITE(UNIT=KLUOUT, FMT='(" YEAR=",I4)') KYEAR 00146 WRITE(UNIT=KLUOUT, FMT='(" MONTH=",I4)') KMONTH 00147 WRITE(UNIT=KLUOUT, FMT='(" DAY=",I4)') KDAY 00148 WRITE(UNIT=KLUOUT, FMT='(" TIME=",E13.6)') PTIME 00149 WRITE(UNIT=KLUOUT, FMT=*)'SURFACE DATE:' 00150 WRITE(UNIT=KLUOUT, FMT='(" YEAR=",I4)') TPTIME%TDATE%YEAR 00151 WRITE(UNIT=KLUOUT, FMT='(" MONTH=",I4)') TPTIME%TDATE%MONTH 00152 WRITE(UNIT=KLUOUT, FMT='(" DAY=",I4)') TPTIME%TDATE%DAY 00153 WRITE(UNIT=KLUOUT, FMT='(" TIME=",E13.6)') TPTIME%TIME 00154 ELSE 00155 WRITE(UNIT=KLUOUT, FMT=*)'SAME ATMOSPHERIC AND SURFACE DATES' 00156 WRITE(UNIT=KLUOUT, FMT=*)'DATE in READ_TEB_DATE' 00157 WRITE(UNIT=KLUOUT, FMT='(" YEAR=",I4," MONTH=",I4," DAY=",I4)') & 00158 KYEAR,KMONTH,KDAY 00159 WRITE(UNIT=KLUOUT, FMT='(" TIME=",E13.6)') PTIME 00160 ENDIF 00161 ENDIF 00162 IF (LHOOK) CALL DR_HOOK('READ_TEB_DATE',1,ZHOOK_HANDLE) 00163 !------------------------------------------------------------------------------ 00164 ! 00165 END SUBROUTINE READ_TEB_DATE
1.8.0