SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/pgd_snap_temp_profile.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE PGD_SNAP_TEMP_PROFILE(HPROGRAM,HFILENAME,PSNAP_COEF, &
00003                                        KSNAP,KTPS,HSNAP_TIME_REF      )
00004 !     ##############################################################
00005 !
00006 !!**** *PGD_SNAP_TEMP_PROFILE* reads a temporal emission profile
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!    AUTHOR
00012 !!    ------
00013 !!
00014 !!    S. QUEGUINER          Meteo-France
00015 !!
00016 !!    MODIFICATION
00017 !!    ------------
00018 !!
00019 !!    Original    09/2011 
00020 !!
00021 !----------------------------------------------------------------------------
00022 !
00023 !*    0.     DECLARATION
00024 !            -----------
00025 !
00026 
00027 USE MODI_OPEN_FILE
00028 USE MODI_CLOSE_FILE
00029 USE MODI_GET_LUOUT
00030 USE MODI_TEST_NAM_VAR_SURF
00031 !
00032 !
00033 USE MODD_SURF_PAR,       ONLY : XUNDEF
00034 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00035 USE PARKIND1  ,ONLY : JPRB
00036 IMPLICIT NONE
00037 !
00038 !*    0.1    Declaration of arguments
00039 !            ------------------------
00040 !
00041  CHARACTER(LEN=6),     INTENT(IN) :: HPROGRAM      ! Type of program
00042  CHARACTER(LEN=28),    INTENT(IN) :: HFILENAME     ! Name of the field file.
00043 REAL, DIMENSION(:,:), INTENT(OUT):: PSNAP_COEF    ! Snap coefficient
00044 INTEGER,              INTENT(IN) :: KTPS          ! Number of time step
00045 INTEGER,              INTENT(IN) :: KSNAP         ! Number of snaps
00046  CHARACTER(LEN=5), OPTIONAL, INTENT(OUT):: HSNAP_TIME_REF ! Reference time
00047 !                                                        ! 'UTC  ' : UTC   time
00048 !                                                        ! 'SOLAR' : SOLAR time
00049 !                                                        ! 'LEGAL' : LEGAL time
00050 !
00051 !*    0.2    Declaration of local variables
00052 !            ------------------------------
00053 !
00054 INTEGER                           :: IUNIT      ! logical unit
00055 INTEGER                           :: JSNAP      ! loop counter on snaps
00056  CHARACTER(LEN=200) :: YCOMMENT
00057 REAL,    DIMENSION(KTPS)          :: ZSNAP_COEF ! snap temporal coefficient
00058 INTEGER                           :: ISNAP      ! snap number
00059 INTEGER                           :: ILUOUT     ! output listing
00060 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00061 !----------------------------------------------------------------------------
00062 !
00063 !*    1.      Open the file
00064 !             -------------
00065 !
00066 IF (LHOOK) CALL DR_HOOK('PGD_SNAP_TEMP_PROFILE',0,ZHOOK_HANDLE)
00067 !
00068  CALL OPEN_FILE(HPROGRAM,IUNIT,HFILENAME,'FORMATTED',HACTION='READ')
00069 !
00070  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00071 !
00072 !----------------------------------------------------------------------------
00073 READ(IUNIT,'(A)') YCOMMENT
00074 !----------------------------------------------------------------------------
00075 !
00076 !*    2.     Reading of time reference for hourly profiles
00077 !            ---------------------------------------------
00078 !
00079 IF (PRESENT(HSNAP_TIME_REF)) THEN
00080   READ(IUNIT,'(A)') HSNAP_TIME_REF
00081   CALL TEST_NAM_VAR_SURF(ILUOUT,'CSNAP_TIME_REF',HSNAP_TIME_REF,'UTC  ','SOLAR','LEGAL')
00082 END IF
00083 !
00084 !----------------------------------------------------------------------------
00085 READ(IUNIT,'(A)') YCOMMENT
00086 !----------------------------------------------------------------------------
00087 !
00088 !*    3.     Reading of snaps temporal coefficients
00089 !            --------------------------------------
00090 !
00091 PSNAP_COEF(:,:)=0.
00092 !
00093 DO JSNAP=1,KSNAP
00094   READ(IUNIT,*,END=2000) ISNAP,ZSNAP_COEF(1:KTPS) 
00095   PSNAP_COEF(:,ISNAP)=ZSNAP_COEF(:)
00096 ENDDO
00097 !
00098 !----------------------------------------------------------------------------
00099 !
00100 !*    8.    Closing of the data file
00101 !           ------------------------
00102 !
00103 2000 CALL CLOSE_FILE (HPROGRAM,IUNIT)
00104 !
00105 IF (LHOOK) CALL DR_HOOK('PGD_SNAP_TEMP_PROFILE',1,ZHOOK_HANDLE)
00106 !
00107 !-------------------------------------------------------------------------------
00108 !
00109 END SUBROUTINE PGD_SNAP_TEMP_PROFILE