SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
get_near_meshes.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 get_near_meshes(HGRID,KGRID_PAR,KL,PGRID_PAR,KNEAR_NBR,KNEAR)
7 ! ##############################################################
8 !
9 !!**** *GET_NEAR_MESHES* get the near grid mesh indices
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !! METHOD
15 !! ------
16 !!
17 !! REFERENCE
18 !! ---------
19 !!
20 !! AUTHOR
21 !! ------
22 !!
23 !! V. Masson Meteo-France
24 !!
25 !! MODIFICATION
26 !! ------------
27 !!
28 !! Original 03/2004
29 !! 10/2007 IGN Grids
30 !! P. Samuelsson SMHI 10/2014 Rotated lonlat
31 !!
32 !----------------------------------------------------------------------------
33 !
34 !* 0. DECLARATION
35 ! -----------
36 !
37 !
38 USE yomhook ,ONLY : lhook, dr_hook
39 USE parkind1 ,ONLY : jprb
40 !
41 USE modi_get_near_meshes_cartesian
42 USE modi_get_near_meshes_conf_proj
43 USE modi_get_near_meshes_gauss
44 USE modi_get_near_meshes_ign
45 USE modi_get_near_meshes_lonlat_reg
46 USE modi_get_near_meshes_lonlatval
47 USE modi_get_near_meshes_lonlat_rot
48 IMPLICIT NONE
49 !
50 !* 0.1 Declaration of arguments
51 ! ------------------------
52 !
53  CHARACTER(LEN=10), INTENT(IN) :: hgrid ! grid type
54 INTEGER, INTENT(IN) :: kgrid_par ! size of PGRID_PAR
55 INTEGER, INTENT(IN) :: kl ! number of points
56 INTEGER, INTENT(IN) :: knear_nbr ! number of nearest points wanted
57 REAL, DIMENSION(KGRID_PAR), INTENT(IN) :: pgrid_par ! grid parameters
58 INTEGER, DIMENSION(:,:),POINTER :: knear ! near mesh indices
59 REAL(KIND=JPRB) :: zhook_handle
60 !
61 !* 0.2 Declaration of other local variables
62 ! ------------------------------------
63 !
64 !----------------------------------------------------------------------------
65 !
66 IF (lhook) CALL dr_hook('GET_NEAR_MESHES',0,zhook_handle)
67 SELECT CASE (hgrid)
68 !
69  CASE("CONF PROJ ")
70  CALL get_near_meshes_conf_proj(kgrid_par,kl,pgrid_par,knear_nbr,knear)
71 
72  CASE("CARTESIAN ")
73  CALL get_near_meshes_cartesian(kgrid_par,kl,pgrid_par,knear_nbr,knear)
74 
75  CASE("LONLAT REG")
76  CALL get_near_meshes_lonlat_reg(kgrid_par,kl,pgrid_par,knear_nbr,knear)
77 
78  CASE("GAUSS ")
79  CALL get_near_meshes_gauss(kgrid_par,kl,pgrid_par,knear_nbr,knear)
80 
81  CASE("IGN ")
82  CALL get_near_meshes_ign(kgrid_par,kl,pgrid_par,knear_nbr,knear)
83 
84  CASE("LONLATVAL ")
85  CALL get_near_meshes_lonlatval(kgrid_par,kl,pgrid_par,knear_nbr,knear)
86 
87  CASE("LONLAT ROT")
88  CALL get_near_meshes_lonlat_rot(kgrid_par,kl,pgrid_par,knear_nbr,knear)
89 
90  CASE("NONE ")
91  knear(:,:) = 0
92 
93 END SELECT
94 IF (lhook) CALL dr_hook('GET_NEAR_MESHES',1,zhook_handle)
95 !
96 !-------------------------------------------------------------------------------
97 !
98 END SUBROUTINE get_near_meshes
subroutine get_near_meshes_lonlatval(KGRID_PAR, KL, PGRID_PAR, KNEAR_NBR, KNEAR)
subroutine get_near_meshes_lonlat_reg(KGRID_PAR, KL, PGRID_PAR, KNEAR_NBR, KNEAR)
subroutine get_near_meshes_lonlat_rot(KGRID_PAR, KL, PGRID_PAR, KNEAR_NBR, KNEAR)
subroutine get_near_meshes_conf_proj(KGRID_PAR, KL, PGRID_PAR, KNEAR_NBR, KNEAR)
subroutine get_near_meshes_ign(KGRID_PAR, KL, PGRID_PAR, KNEAR_NBR, KNEAR)
subroutine get_near_meshes_cartesian(KGRID_PAR, KL, PGRID_PAR, KNEAR_NBR, KNEAR)
subroutine get_near_meshes(HGRID, KGRID_PAR, KL, PGRID_PAR, KNEAR_NBR, KNEAR)
subroutine get_near_meshes_gauss(KGRID_PAR, KL, PGRID_PAR, KNEAR_NBR, KNEAR)