SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
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, DGU, U, &
6  hftyp,hfnam,hmask,hscheme,pfield,hnam)
7 !
8 !
9 !
10 !
13 USE modd_surf_atm_n, ONLY : surf_atm_t
14 !
15 USE modi_init_io_surf_n
16 USE modi_end_io_surf_n
18 !
19 #ifdef SFX_ASC
20 USE modi_set_surfex_file_name_asc
21 #endif
22 #ifdef SFX_FA
23 USE modi_set_surfex_file_name_fa
24 #endif
25 #ifdef SFX_LFI
26 USE modi_set_surfex_file_name_lfi
27 #endif
28 #ifdef SFX_NC
29 USE modi_set_surfex_file_name_nc
30 #endif
31 !
32 USE yomhook ,ONLY : lhook, dr_hook
33 USE parkind1 ,ONLY : jprb
34 !
35 IMPLICIT NONE
36 !
37 !
38 !
39 TYPE(data_cover_t), INTENT(INOUT) :: dtco
40 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
41 TYPE(surf_atm_t), INTENT(INOUT) :: u
42 
43 !
44  CHARACTER(LEN=6), INTENT(IN) :: hftyp
45  CHARACTER(LEN=28), INTENT(IN) :: hfnam
46  CHARACTER(LEN=6), INTENT(IN) :: hmask
47  CHARACTER(LEN=6), INTENT(IN) :: hscheme
48 REAL, DIMENSION(:), INTENT(OUT) :: pfield
49  CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: hnam
50 !
51  CHARACTER(LEN=28) :: hname
52  CHARACTER(LEN=12) :: yrecfm
53 INTEGER :: iresp, i0
54 !
55 REAL(KIND=JPRB) :: zhook_handle
56 
57 IF (lhook) CALL dr_hook('READ_FROM_SURFEX_FILE',0,zhook_handle)
58 
59 hname=adjustl(adjustr(hfnam))
60 
61 IF (present(hnam)) THEN
62  yrecfm=hnam
63 ELSE
64  i0=index(hname,'.',back=.true.)
65  yrecfm=hname(1:i0-1)
66 ENDIF
67 
68 IF (hftyp=='ASCII ') THEN
69 #ifdef SFX_ASC
70  CALL set_surfex_file_name_asc(hname_in=hname)
71 #endif
72 ELSEIF (hftyp=='FA ') THEN
73 #ifdef SFX_FA
74  CALL set_surfex_file_name_fa(hname_in=hname)
75 #endif
76 ELSEIF (hftyp=='LFI ') THEN
77 #ifdef SFX_LFI
78  CALL set_surfex_file_name_lfi(hname_in=hname)
79 #endif
80 ELSEIF (hftyp=='NC ') THEN
81 #ifdef SFX_NC
82  CALL set_surfex_file_name_nc(hname_in=hname)
83 #endif
84 ENDIF
85  CALL init_io_surf_n(dtco, dgu, u, &
86  hftyp,hmask,hscheme,'READ ')
87  CALL read_surf(&
88  hftyp,yrecfm,pfield,iresp)
89  CALL end_io_surf_n(hftyp)
90 
91 IF (lhook) CALL dr_hook('READ_FROM_SURFEX_FILE',1,zhook_handle)
92 
93 END SUBROUTINE read_from_surfex_file
subroutine set_surfex_file_name_asc(HNAME_IN, HNAME_OUT)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
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)
subroutine end_io_surf_n(HPROGRAM)
Definition: end_io_surfn.F90:6
subroutine read_from_surfex_file(DTCO, DGU, U, HFTYP, HFNAM, HMASK, HSCHEME, PFIELD, HNAM)