SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
prep_grid_conf_proj.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 ! #########
6  SUBROUTINE prep_grid_conf_proj (&
7  hfiletype,hinterp_type,kni)
8 ! ##########################################################################
9 !
10 !!**** *PREP_GRID_CONF_PROJ* - reads EXTERNALIZED Surface grid.
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !!** METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !!
29 !! AUTHOR
30 !! ------
31 !!
32 !! V. Masson
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 06/2003
37 !-------------------------------------------------------------------------------
38 !
39 !* 0. DECLARATIONS
40 ! ------------
41 !
42 !
43 !
44 !
46 !
47 USE modd_grid_conf_proj, ONLY : xx, xy, nx, ny, xlat0, xlon0, xlatori, &
48  xlonori, xrpk, xbeta
49 !
50 !
51 USE yomhook ,ONLY : lhook, dr_hook
52 USE parkind1 ,ONLY : jprb
53 !
54 IMPLICIT NONE
55 !
56 !* 0.1. Declaration of arguments
57 ! ------------------------
58 !
59 !
60 !
61  CHARACTER(LEN=6), INTENT(IN) :: hfiletype ! file type
62  CHARACTER(LEN=6), INTENT(OUT) :: hinterp_type ! Grid type
63 INTEGER, INTENT(OUT) :: kni ! number of points
64 !
65 !* 0.2 Declaration of local variables
66 ! ------------------------------
67 !
68  CHARACTER(LEN=12) :: yrecfm ! Name of the article to be read
69 INTEGER :: iresp
70 !
71 !
72 INTEGER :: jl ! loop counter
73 REAL, DIMENSION(:), ALLOCATABLE :: zw ! work array
74 REAL(KIND=JPRB) :: zhook_handle
75 !
76 !-----------------------------------------------------------------------
77 !
78 !* 1 Projection
79 ! ----------
80 !
81 IF (lhook) CALL dr_hook('PREP_GRID_CONF_PROJ',0,zhook_handle)
82 yrecfm = 'LAT0'
83  CALL read_surf(&
84  hfiletype,yrecfm,xlat0,iresp)
85 yrecfm = 'LON0'
86  CALL read_surf(&
87  hfiletype,yrecfm,xlon0,iresp)
88 yrecfm = 'RPK'
89  CALL read_surf(&
90  hfiletype,yrecfm,xrpk,iresp)
91 yrecfm = 'BETA'
92  CALL read_surf(&
93  hfiletype,yrecfm,xbeta,iresp)
94 !
95 !-----------------------------------------------------------------------
96 !
97 !* 2 Grid
98 ! ----
99 !
100 yrecfm = 'LATORI'
101  CALL read_surf(&
102  hfiletype,yrecfm,xlatori,iresp)
103 yrecfm = 'LONORI'
104  CALL read_surf(&
105  hfiletype,yrecfm,xlonori,iresp)
106 !
107 yrecfm = 'IMAX'
108  CALL read_surf(&
109  hfiletype,yrecfm,nx,iresp)
110 yrecfm = 'JMAX'
111  CALL read_surf(&
112  hfiletype,yrecfm,ny,iresp)
113 !
114 kni = nx * ny
115 !
116 ALLOCATE(zw(kni))
117 !
118 IF (ALLOCATED(xx)) DEALLOCATE(xx)
119 ALLOCATE(xx(nx))
120 yrecfm = 'XX'
121  CALL read_surf(&
122  hfiletype,yrecfm,zw,iresp,hdir='A')
123 xx = zw(1:nx)
124 
125 
126 IF (ALLOCATED(xy)) DEALLOCATE(xy)
127 ALLOCATE(xy(ny))
128 yrecfm = 'YY'
129  CALL read_surf(&
130  hfiletype,yrecfm,zw,iresp,hdir='A')
131 DO jl=1,kni
132  IF (mod(jl,nx)==0) xy(jl/nx) = zw(jl)
133 END DO
134 DEALLOCATE(zw)
135 !
136 !-----------------------------------------------------------------------
137 IF(kni==1)THEN
138  hinterp_type = 'UNIF '
139 ELSE
140  hinterp_type = 'BILIN '
141 ENDIF
142 IF (lhook) CALL dr_hook('PREP_GRID_CONF_PROJ',1,zhook_handle)
143 !-----------------------------------------------------------------------
144 !
145 END SUBROUTINE prep_grid_conf_proj
subroutine prep_grid_conf_proj(HFILETYPE, HINTERP_TYPE, KNI)