SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_binllv.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE READ_BINLLV(HPROGRAM,HSUBROUTINE,HFILENAME)
00003 !     ##############################################################
00004 !
00005 !!**** *READ_BINLLV* reads a binary latlonvalue file and call treatment 
00006 !!                   subroutine
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!    AUTHOR
00012 !!    ------
00013 !!
00014 !!    V. Masson          Meteo-France
00015 !!
00016 !!    MODIFICATION
00017 !!    ------------
00018 !!
00019 !!    Original    12/09/95
00020 !!                03/2004  externalization (V. Masson)
00021 !!
00022 !----------------------------------------------------------------------------
00023 !
00024 !*    0.     DECLARATION
00025 !            -----------
00026 !
00027 USE MODD_PGD_GRID,   ONLY : LLATLONMASK
00028 !
00029 USE MODI_OPEN_FILE
00030 USE MODI_CLOSE_FILE
00031 USE MODI_PT_BY_PT_TREATMENT
00032 USE MODI_GET_LUOUT
00033 !
00034 !
00035 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00036 USE PARKIND1  ,ONLY : JPRB
00037 !
00038 IMPLICIT NONE
00039 !
00040 !*    0.1    Declaration of arguments
00041 !            ------------------------
00042 !
00043  CHARACTER(LEN=6),  INTENT(IN) :: HPROGRAM      ! Type of program
00044  CHARACTER(LEN=6),  INTENT(IN) :: HSUBROUTINE   ! Name of the subroutine to call
00045  CHARACTER(LEN=28), INTENT(IN) :: HFILENAME     ! Name of the field file.
00046 !
00047 !
00048 !*    0.2    Declaration of local variables
00049 !            ------------------------------
00050 !
00051 INTEGER      :: IGLB                       ! logical unit
00052 !
00053 INTEGER      :: JLAT, JLON                 ! indexes of OLATLONMASK array
00054 REAL         :: ZVALUE                     ! values of a data point
00055 REAL         :: ZLAT                       ! latitude of data point
00056 REAL         :: ZLON                       ! longitude of data point
00057 !
00058 INTEGER      :: ILUOUT                     ! output listing
00059 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00060 !----------------------------------------------------------------------------
00061 !
00062 !*    1.      Open the file
00063 !             -------------
00064 !
00065 IF (LHOOK) CALL DR_HOOK('READ_BINLLV',0,ZHOOK_HANDLE)
00066  CALL OPEN_FILE(HPROGRAM,IGLB,HFILENAME,'UNFORMATTED',HACTION='READ')
00067 !
00068  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00069 !
00070 !----------------------------------------------------------------------------
00071 DO
00072 !----------------------------------------------------------------------------
00073 !
00074 !*    3.     Reading of a data point
00075 !            -----------------------
00076 !
00077   READ(IGLB,END=99) ZLAT,ZLON,ZVALUE
00078 !
00079 !----------------------------------------------------------------------------
00080 !
00081 !*    4.     Test if point is in the domain
00082 !            ------------------------------
00083 !
00084   ZLON=ZLON+NINT((180.-ZLON)/360.)*360.
00085   !
00086   JLAT = 1 + INT( ( ZLAT + 90. ) * 2. )
00087   JLAT = MIN(JLAT,360)
00088   JLON = 1 + INT( ( ZLON       ) * 2. )
00089   JLON = MIN(JLON,720)
00090   !
00091   IF (.NOT. LLATLONMASK(JLON,JLAT)) CYCLE
00092 !
00093 !-------------------------------------------------------------------------------
00094 !
00095 !*    5.     Call to the adequate subroutine (point by point treatment)
00096 !            ----------------------------------------------------------
00097 !     
00098   CALL PT_BY_PT_TREATMENT(ILUOUT,  (/ ZLAT /) , (/ ZLON /) , (/ ZVALUE /) , &
00099                             HSUBROUTINE                                       )  
00100 !
00101 !-------------------------------------------------------------------------------
00102 ENDDO
00103 !
00104 !----------------------------------------------------------------------------
00105 !
00106 !*    8.    Closing of the data file
00107 !           ------------------------
00108 !
00109 99 CONTINUE
00110  CALL CLOSE_FILE (HPROGRAM,IGLB)
00111 IF (LHOOK) CALL DR_HOOK('READ_BINLLV',1,ZHOOK_HANDLE)
00112 !
00113 !-------------------------------------------------------------------------------
00114 !
00115 END SUBROUTINE READ_BINLLV