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