SURFEX v7.3
General documentation of Surfex
|
00001 SUBROUTINE READ_FROM_SURFEX_FILE(HFTYP,HFNAM,HMASK,HSCHEME,PFIELD,HNAM) 00002 ! 00003 USE MODI_INIT_IO_SURF_n 00004 USE MODI_END_IO_SURF_n 00005 USE MODI_READ_SURF 00006 ! 00007 #ifdef ASC 00008 USE MODI_SET_SURFEX_FILE_NAME_ASC 00009 #endif 00010 #ifdef FA 00011 USE MODI_SET_SURFEX_FILE_NAME_FA 00012 #endif 00013 #ifdef LFI 00014 USE MODI_SET_SURFEX_FILE_NAME_LFI 00015 #endif 00016 ! 00017 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00018 USE PARKIND1 ,ONLY : JPRB 00019 ! 00020 IMPLICIT NONE 00021 ! 00022 CHARACTER(LEN=6), INTENT(IN) :: HFTYP 00023 CHARACTER(LEN=28), INTENT(IN) :: HFNAM 00024 CHARACTER(LEN=6), INTENT(IN) :: HMASK 00025 CHARACTER(LEN=6), INTENT(IN) :: HSCHEME 00026 REAL, DIMENSION(:), INTENT(OUT) :: PFIELD 00027 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HNAM 00028 ! 00029 CHARACTER(LEN=28) :: HNAME 00030 CHARACTER(LEN=12) :: YRECFM 00031 INTEGER :: IRESP, I0 00032 ! 00033 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00034 00035 IF (LHOOK) CALL DR_HOOK('READ_FROM_SURFEX_FILE',0,ZHOOK_HANDLE) 00036 00037 HNAME=ADJUSTL(ADJUSTR(HFNAM)) 00038 00039 IF (PRESENT(HNAM)) THEN 00040 YRECFM=HNAM 00041 ELSE 00042 I0=INDEX(HNAME,'.',BACK=.TRUE.) 00043 YRECFM=HNAME(1:I0-1) 00044 ENDIF 00045 00046 IF (HFTYP=='ASCII ') THEN 00047 #ifdef ASC 00048 CALL SET_SURFEX_FILE_NAME_ASC(HNAME_IN=HNAME) 00049 #endif 00050 ELSEIF (HFTYP=='FA ') THEN 00051 #ifdef FA 00052 CALL SET_SURFEX_FILE_NAME_FA(HNAME_IN=HNAME) 00053 #endif 00054 ELSEIF (HFTYP=='LFI ') THEN 00055 #ifdef LFI 00056 CALL SET_SURFEX_FILE_NAME_LFI(HNAME_IN=HNAME) 00057 #endif 00058 ENDIF 00059 00060 CALL INIT_IO_SURF_n(HFTYP,HMASK,HSCHEME,'READ ') 00061 CALL READ_SURF(HFTYP,YRECFM,PFIELD,IRESP) 00062 CALL END_IO_SURF_n(HFTYP) 00063 00064 IF (LHOOK) CALL DR_HOOK('READ_FROM_SURFEX_FILE',1,ZHOOK_HANDLE) 00065 00066 END SUBROUTINE READ_FROM_SURFEX_FILE