SURFEX v7.3
General documentation of Surfex
|
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