SURFEX v8.1
General documentation of Surfex
read_from_surfex_file.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 SUBROUTINE read_from_surfex_file (DTCO, U, &
6  HFTYP,HFNAM,HMASK,HSCHEME,PFIELD,HNAM)
7 !
8 !
9 !
10 !
12 USE modd_surf_atm_n, ONLY : surf_atm_t
13 !
14 USE modi_init_io_surf_n
15 USE modi_end_io_surf_n
17 !
18 #ifdef SFX_ASC
19 USE modi_set_surfex_file_name_asc
20 #endif
21 #ifdef SFX_FA
22 USE modi_set_surfex_file_name_fa
23 #endif
24 #ifdef SFX_LFI
25 USE modi_set_surfex_file_name_lfi
26 #endif
27 #ifdef SFX_NC
28 USE modi_set_surfex_file_name_nc
29 #endif
30 !
31 USE yomhook ,ONLY : lhook, dr_hook
32 USE parkind1 ,ONLY : jprb
33 !
34 IMPLICIT NONE
35 !
36 !
37 !
38 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
39 TYPE(surf_atm_t), INTENT(INOUT) :: U
40 
41 !
42  CHARACTER(LEN=6), INTENT(IN) :: HFTYP
43  CHARACTER(LEN=28), INTENT(IN) :: HFNAM
44  CHARACTER(LEN=6), INTENT(IN) :: HMASK
45  CHARACTER(LEN=6), INTENT(IN) :: HSCHEME
46 REAL, DIMENSION(:), INTENT(OUT) :: PFIELD
47  CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HNAM
48 !
49  CHARACTER(LEN=28) :: HNAME
50  CHARACTER(LEN=12) :: YRECFM
51 INTEGER :: IRESP, I0
52 !
53 REAL(KIND=JPRB) :: ZHOOK_HANDLE
54 
55 IF (lhook) CALL dr_hook('READ_FROM_SURFEX_FILE',0,zhook_handle)
56 
57 hname=adjustl(adjustr(hfnam))
58 
59 IF (PRESENT(hnam)) THEN
60  yrecfm=hnam
61 ELSE
62  i0=index(hname,'.',back=.true.)
63  yrecfm=hname(1:i0-1)
64 ENDIF
65 
66 IF (hftyp=='ASCII ') THEN
67 #ifdef SFX_ASC
68  CALL set_surfex_file_name_asc(hname_in=hname)
69 #endif
70 ELSEIF (hftyp=='FA ') THEN
71 #ifdef SFX_FA
72  CALL set_surfex_file_name_fa(hname_in=hname)
73 #endif
74 ELSEIF (hftyp=='LFI ') THEN
75 #ifdef SFX_LFI
76  CALL set_surfex_file_name_lfi(hname_in=hname)
77 #endif
78 ELSEIF (hftyp=='NC ') THEN
79 #ifdef SFX_NC
80  CALL set_surfex_file_name_nc(hname_in=hname)
81 #endif
82 ENDIF
83  CALL init_io_surf_n(dtco, u, &
84  hftyp,hmask,hscheme,'READ ')
85  CALL read_surf(&
86  hftyp,yrecfm,pfield,iresp)
87  CALL end_io_surf_n(hftyp)
88 
89 IF (lhook) CALL dr_hook('READ_FROM_SURFEX_FILE',1,zhook_handle)
90 
91 END SUBROUTINE read_from_surfex_file
subroutine set_surfex_file_name_asc(HNAME_IN, HNAME_OUT)
subroutine set_surfex_file_name_lfi(HNAME_IN, HNAME_OUT)
subroutine set_surfex_file_name_fa(HNAME_IN, HNAME_OUT)
subroutine set_surfex_file_name_nc(HNAME_IN, HNAME_OUT)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine end_io_surf_n(HPROGRAM)
Definition: end_io_surfn.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine read_from_surfex_file(DTCO, U, HFTYP, HFNAM, HMASK, HSCHEME, PFIELD, HNAM)
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION
ERROR in index
Definition: ecsort_shared.h:90