SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
read_nam_gridtype.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 read_nam_gridtype(HPROGRAM,HGRID,KGRID_PAR,PGRID_PAR,KL)
7 ! ##########################################################
8 !!
9 !! PURPOSE
10 !! -------
11 !! Reads in namelist the grid type and parameters.
12 !!
13 !! METHOD
14 !! ------
15 !!
16 !! EXTERNAL
17 !! --------
18 !!
19 !!
20 !! IMPLICIT ARGUMENTS
21 !! ------------------
22 !!
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !! AUTHOR
28 !! ------
29 !!
30 !! V. Masson Meteo-France
31 !!
32 !! MODIFICATION
33 !! ------------
34 !!
35 !! Original 01/2004
36 !! E. Martin 10/2007 IGN Grids
37 !! P. Samuelsson SMHI 12/2012 Rotated lonlat
38 !----------------------------------------------------------------------------
39 !
40 !* 0. DECLARATION
41 ! -----------
42 !
43 USE yomhook ,ONLY : lhook, dr_hook
44 USE parkind1 ,ONLY : jprb
45 !
46 USE modi_abor1_sfx
47 !
48 USE modi_read_nam_grid_cartesian
49 !
50 USE modi_read_nam_grid_conf_proj
51 !
52 USE modi_read_nam_grid_gauss
53 !
54 USE modi_read_nam_grid_ign
55 !
56 USE modi_read_nam_grid_lonlat_reg
57 !
58 USE modi_read_nam_grid_lonlatval
59 !
60 USE modi_read_nam_grid_lonlat_rot
61 IMPLICIT NONE
62 !
63 !* 0.1 Declaration of dummy arguments
64 ! ------------------------------
65 !
66  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling the surface
67  CHARACTER(LEN=10), INTENT(IN) :: hgrid ! grid type
68 INTEGER, INTENT(OUT) :: kgrid_par ! size of PGRID_PAR
69 REAL, DIMENSION(:), POINTER :: pgrid_par ! parameters defining this grid
70 INTEGER, INTENT(OUT) :: kl ! number of points
71 REAL(KIND=JPRB) :: zhook_handle
72 !
73 !
74 !* 0.2 Declaration of local variables
75 ! ------------------------------
76 !
77 !------------------------------------------------------------------------------
78 !
79 IF (lhook) CALL dr_hook('READ_NAM_GRIDTYPE',0,zhook_handle)
80 SELECT CASE (hgrid)
81 
82 !* 1. Conformal projection grid and regular lat/lon
83 ! ---------------------------------------------
84 !
85  CASE ('CONF PROJ ','LONLAT REG','CARTESIAN ','GAUSS ','IGN ','LONLATVAL ','LONLAT ROT')
86  kgrid_par = 0
87  ALLOCATE(pgrid_par(0))
88  IF (hgrid=='CONF PROJ ')&
89  CALL read_nam_grid_conf_proj(hprogram,kgrid_par,kl,pgrid_par)
90  IF (hgrid=='CARTESIAN ')&
91  CALL read_nam_grid_cartesian(hprogram,kgrid_par,kl,pgrid_par)
92  IF (hgrid=='LONLAT REG')&
93  CALL read_nam_grid_lonlat_reg(hprogram,kgrid_par,kl,pgrid_par)
94  IF (hgrid=='GAUSS ')&
95  CALL read_nam_grid_gauss(hprogram,kgrid_par,kl,pgrid_par)
96  IF (hgrid=='IGN ')&
97  CALL read_nam_grid_ign(hprogram,kgrid_par,kl,pgrid_par)
98  IF (hgrid=='LONLATVAL ')&
99  CALL read_nam_grid_lonlatval(hprogram,kgrid_par,kl,pgrid_par)
100  IF (hgrid=='LONLAT ROT')&
101  CALL read_nam_grid_lonlat_rot(hprogram,kgrid_par,kl,pgrid_par)
102  DEALLOCATE(pgrid_par)
103  ALLOCATE(pgrid_par(kgrid_par))
104  IF (hgrid=='CONF PROJ ')&
105  CALL read_nam_grid_conf_proj(hprogram,kgrid_par,kl,pgrid_par)
106  IF (hgrid=='CARTESIAN ')&
107  CALL read_nam_grid_cartesian(hprogram,kgrid_par,kl,pgrid_par)
108  IF (hgrid=='LONLAT REG')&
109  CALL read_nam_grid_lonlat_reg(hprogram,kgrid_par,kl,pgrid_par)
110  IF (hgrid=='GAUSS ')&
111  CALL read_nam_grid_gauss(hprogram,kgrid_par,kl,pgrid_par)
112  IF (hgrid=='IGN ')&
113  CALL read_nam_grid_ign(hprogram,kgrid_par,kl,pgrid_par)
114  IF (hgrid=='LONLATVAL ')&
115  CALL read_nam_grid_lonlatval(hprogram,kgrid_par,kl,pgrid_par)
116  IF (hgrid=='LONLAT ROT')&
117  CALL read_nam_grid_lonlat_rot(hprogram,kgrid_par,kl,pgrid_par)
118  ! note that all points of the grid will be kept, whatever the surface
119  ! type under consideration (e.g. sea points will be kept even for
120  ! initialization of continents)
121  !
122 
123 !* 2. Other cases
124 ! -----------
125 !
126  CASE default
127  CALL abor1_sfx('READ_NAM_GRIDTYPE: GRID TYPE NOT SUPPORTED, '//hgrid)
128 
129 END SELECT
130 IF (lhook) CALL dr_hook('READ_NAM_GRIDTYPE',1,zhook_handle)
131 !
132 !-------------------------------------------------------------------------------
133 !
134 END SUBROUTINE read_nam_gridtype
subroutine read_nam_grid_gauss(HPROGRAM, KGRID_PAR, KL, PGRID_PAR)
subroutine read_nam_grid_lonlatval(HPROGRAM, KGRID_PAR, KL, PGRID_PAR)
subroutine read_nam_grid_lonlat_reg(HPROGRAM, KGRID_PAR, KL, PGRID_PAR)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine read_nam_grid_conf_proj(HPROGRAM, KGRID_PAR, KL, PGRID_PAR)
subroutine read_nam_gridtype(HPROGRAM, HGRID, KGRID_PAR, PGRID_PAR, KL)
subroutine read_nam_grid_lonlat_rot(HPROGRAM, KGRID_PAR, KL, PGRID_PAR)
subroutine read_nam_grid_cartesian(HPROGRAM, KGRID_PAR, KL, PGRID_PAR)
subroutine read_nam_grid_ign(HPROGRAM, KGRID_PAR, KL, PGRID_PAR)