SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_PREP_FILE_DATE(HPROGRAM,HFILE,HFILETYPE,TPTIME,KLUOUT) 00003 ! ################################################################################# 00004 ! 00005 !!**** *READ_PREP_FILE_DATE* - reads the date for the surface 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! REFERENCE 00014 !! --------- 00015 !! 00016 !! 00017 !! AUTHOR 00018 !! ------ 00019 !! S. Malardel 00020 !! 00021 !! MODIFICATIONS 00022 !! ------------- 00023 !! Original 01/2004 00024 !! P. Le Moigne 10/2005, Phasage Arome 00025 !!------------------------------------------------------------------ 00026 ! 00027 ! 00028 USE MODD_TYPE_DATE_SURF 00029 USE MODD_IO_BUFF_n, ONLY : CREC, NREC 00030 ! 00031 USE MODI_PREP_GRIB_GRID 00032 USE MODI_READ_BUFFER 00033 USE MODI_OPEN_AUX_IO_SURF 00034 USE MODI_READ_SURF 00035 USE MODI_CLOSE_AUX_IO_SURF 00036 ! 00037 ! 00038 ! 00039 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00040 USE PARKIND1 ,ONLY : JPRB 00041 ! 00042 IMPLICIT NONE 00043 ! 00044 !* 0.1 declarations of arguments 00045 ! 00046 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00047 CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of file 00048 CHARACTER(LEN=6), INTENT(IN) :: HFILETYPE ! file type 00049 TYPE (DATE_TIME), INTENT(OUT) :: TPTIME ! grib date and time 00050 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing 00051 ! 00052 !* 0.2 declarations of local variables 00053 ! 00054 CHARACTER(LEN=12), DIMENSION(3000) :: HREC ! list of records already read/written 00055 INTEGER :: IREC 00056 CHARACTER(LEN=6) :: YINMODEL ! model from which GRIB file originates 00057 CHARACTER(LEN=10) :: YGRIDTYPE ! Grid type 00058 INTEGER :: IRESP ! Error code after redding 00059 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00060 ! 00061 !------------------------------------------------------------------------------------- 00062 ! 00063 !* 1. Reading date in a grib file 00064 ! -------------------------- 00065 ! 00066 IF (LHOOK) CALL DR_HOOK('READ_PREP_FILE_DATE',0,ZHOOK_HANDLE) 00067 IF(HFILETYPE=='GRIB ') THEN 00068 ! 00069 CALL PREP_GRIB_GRID(HFILE,KLUOUT,YINMODEL,YGRIDTYPE,TPTIME) 00070 ! 00071 ELSE IF(HFILETYPE=='MESONH' .OR. HFILETYPE=='LFI ' .OR. HFILETYPE=='ASCII ') THEN 00072 ! 00073 HREC = CREC 00074 IREC = NREC 00075 CALL OPEN_AUX_IO_SURF(HFILE,HFILETYPE,'FULL ') 00076 CALL READ_SURF(HFILETYPE,'DTCUR ',TPTIME,IRESP) 00077 CALL CLOSE_AUX_IO_SURF(HFILE,HFILETYPE) 00078 CREC = HREC 00079 NREC = IREC 00080 ! 00081 ELSE IF(HFILETYPE=='BUFFER') THEN 00082 ! 00083 CALL READ_BUFFER('YEAR ',TPTIME%TDATE%YEAR,IRESP) 00084 CALL READ_BUFFER('MONTH ',TPTIME%TDATE%MONTH,IRESP) 00085 CALL READ_BUFFER('DAY ',TPTIME%TDATE%DAY,IRESP) 00086 CALL READ_BUFFER('TIME ',TPTIME%TIME,IRESP) 00087 ! 00088 ELSE 00089 ! 00090 WRITE(UNIT=KLUOUT, FMT=*) 'STOP IN READ_PREP_FILE_DATE' 00091 WRITE(UNIT=KLUOUT, FMT='("FILETYPE =",A6,"NOT SUPPORTED")') HFILETYPE 00092 ! 00093 ENDIF 00094 IF (LHOOK) CALL DR_HOOK('READ_PREP_FILE_DATE',1,ZHOOK_HANDLE) 00095 ! 00096 !------------------------------------------------------------------------------------- 00097 END SUBROUTINE READ_PREP_FILE_DATE