SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
prep_grid_cartesian.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_cartesian (&
7  hfiletype,hinterp_type,kni)
8 ! ##########################################################################
9 !
10 !!**** *PREP_GRID_CARTESIAN* - 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_cartesian, ONLY : xx, xy, nx, ny
48 !
49 !
50 USE yomhook ,ONLY : lhook, dr_hook
51 USE parkind1 ,ONLY : jprb
52 !
53 IMPLICIT NONE
54 !
55 !* 0.1. Declaration of arguments
56 ! ------------------------
57 !
58 !
59 !
60  CHARACTER(LEN=6), INTENT(IN) :: hfiletype ! file type
61  CHARACTER(LEN=6), INTENT(OUT) :: hinterp_type ! Grid type
62 INTEGER, INTENT(OUT) :: kni ! number of points
63 !
64 !* 0.2 Declaration of local variables
65 ! ------------------------------
66 !
67  CHARACTER(LEN=12) :: yrecfm ! Name of the article to be read
68 INTEGER :: iresp
69 !
70 INTEGER :: jl ! loop counter
71 REAL, DIMENSION(:), ALLOCATABLE :: zw ! work array
72 REAL(KIND=JPRB) :: zhook_handle
73 !
74 !-----------------------------------------------------------------------
75 !
76 !* Grid
77 ! ----
78 !
79 IF (lhook) CALL dr_hook('PREP_GRID_CARTESIAN',0,zhook_handle)
80 yrecfm = 'IMAX'
81  CALL read_surf(&
82  hfiletype,yrecfm,nx,iresp)
83 yrecfm = 'JMAX'
84  CALL read_surf(&
85  hfiletype,yrecfm,ny,iresp)
86 !
87 kni = nx * ny
88 !
89 ALLOCATE(zw(kni))
90 !
91 IF (ALLOCATED(xx)) DEALLOCATE(xx)
92 ALLOCATE(xx(nx))
93 yrecfm = 'XX'
94  CALL read_surf(&
95  hfiletype,yrecfm,zw,iresp,hdir='A')
96 xx = zw(1:nx)
97 
98 
99 IF (ALLOCATED(xy)) DEALLOCATE(xy)
100 ALLOCATE(xy(ny))
101 yrecfm = 'YY'
102  CALL read_surf(&
103  hfiletype,yrecfm,zw,iresp,hdir='A')
104 DO jl=1,kni
105  IF (mod(jl,nx)==0) xy(jl/nx) = zw(jl)
106 END DO
107 DEALLOCATE(zw)
108 !
109 !-----------------------------------------------------------------------
110 IF(kni==1)THEN
111  hinterp_type = 'UNIF '
112 ELSE
113  hinterp_type = 'BILIN '
114 ENDIF
115 IF (lhook) CALL dr_hook('PREP_GRID_CARTESIAN',1,zhook_handle)
116 !-----------------------------------------------------------------------
117 !
118 END SUBROUTINE prep_grid_cartesian
subroutine prep_grid_cartesian(HFILETYPE, HINTERP_TYPE, KNI)