SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/ol_find_file_read.F90
Go to the documentation of this file.
00001 !     #########
00002         SUBROUTINE OL_FIND_FILE_READ(HNAME,IFILE_ID)
00003 !     ###############################
00004 !
00005 !!****  *OL_FIND_FILE_READ
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      F. Habets   *Meteo France*
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    07-03
00031 !-------------------------------------------------------------------------------
00032 !
00033 !*       0.    DECLARATIONS
00034 !              ------------
00035 
00036 USE MODD_OL_FILEID
00037 
00038 
00039 !
00040 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00041 USE PARKIND1  ,ONLY : JPRB
00042 !
00043 USE MODI_ABOR1_SFX
00044 IMPLICIT NONE
00045 INCLUDE "netcdf.inc"
00046 
00047 
00048 ! 
00049  CHARACTER(LEN=*),   INTENT(IN) :: HNAME
00050 INTEGER, INTENT(OUT):: IFILE_ID
00051 
00052 INTEGER, DIMENSION(:), ALLOCATABLE :: ITEMP
00053  CHARACTER(LEN=100), DIMENSION(:), ALLOCATABLE :: HTEMP
00054 LOGICAL     :: LFIND_VAR
00055  CHARACTER(LEN=100)             :: HFILE_PAS,HNAME_PAS
00056 INTEGER :: JRET
00057 INTEGER :: JFILE,JVAR,IVAR_ID
00058 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00059 
00060 !******************************************
00061 
00062 IF (LHOOK) CALL DR_HOOK('OL_FIND_FILE_READ',0,ZHOOK_HANDLE)
00063 HNAME_PAS=HNAME(:LEN_TRIM(HNAME))
00064 
00065 LFIND_VAR=.FALSE.
00066 IFILE_ID=0
00067 
00068 IF (SIZE(XID_VARIN).GT.0) THEN
00069   DO JVAR=1,SIZE(XVAR_TO_FILEIN)
00070     IF (TRIM(XVAR_TO_FILEIN(JVAR))==HNAME_PAS) THEN
00071       IFILE_ID=XID_VARIN(JVAR)
00072       LFIND_VAR=.TRUE.
00073       EXIT
00074     ENDIF
00075   ENDDO
00076 ENDIF
00077 
00078 IF (.NOT.LFIND_VAR) THEN
00079 
00080   JFILE=1
00081 
00082   JRET=NF_NOERR+1
00083   DO WHILE  ((JFILE<= SIZE(XID_IN)) .AND. (JRET /= NF_NOERR))
00084        IFILE_ID=XID_IN(JFILE)
00085        JRET=NF_INQ_VARID(IFILE_ID,HNAME_PAS,IVAR_ID)
00086        JFILE=JFILE+1
00087   ENDDO
00088 
00089   IF (JRET == NF_NOERR) THEN
00090     XIN=XIN+1
00091     ALLOCATE(ITEMP(XIN))
00092     ALLOCATE(HTEMP(XIN))
00093     ITEMP(XIN)=IFILE_ID
00094     HTEMP(XIN)=HNAME_PAS
00095     IF (XIN.GT.1) THEN
00096       ITEMP(1:XIN-1)=XID_VARIN(:)
00097       HTEMP(1:XIN-1)=XVAR_TO_FILEIN(:)
00098     ENDIF
00099     !
00100     DEALLOCATE(XID_VARIN)
00101     DEALLOCATE(XVAR_TO_FILEIN)
00102     ALLOCATE(XID_VARIN(XIN))
00103     ALLOCATE(XVAR_TO_FILEIN(XIN))
00104     XID_VARIN=ITEMP
00105     XVAR_TO_FILEIN=HTEMP
00106     DEALLOCATE(ITEMP)
00107     DEALLOCATE(HTEMP)
00108   ELSE
00109     CALL ABOR1_SFX("OL_FIND_FILE_READ: "//HNAME_PAS//" NOT FOUND IN INPUT NC FILES")
00110   ENDIF
00111 
00112 ENDIF
00113 IF (LHOOK) CALL DR_HOOK('OL_FIND_FILE_READ',1,ZHOOK_HANDLE)
00114 
00115 
00116 END SUBROUTINE OL_FIND_FILE_READ