SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
get_adjacent_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_adjacent_meshes(HGRID,KGRID_PAR,KL,PGRID_PAR,KLEFT,KRIGHT,KTOP,KBOTTOM)
7 ! ##############################################################
8 !
9 !!**** *GET_ADJACENT_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 E. Martin IGN Grid
30 !! 10/2014 P. Samuelsson SMHI 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_adj_mes_cart
42 USE modi_get_adj_mes_conf_proj
43 USE modi_get_adj_mes_gauss
44 USE modi_get_adj_mes_ign
45 USE modi_get_adj_mes_lonlat_reg
46 USE modi_get_adj_mes_lonlatval
47 USE modi_get_adj_mes_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 REAL, DIMENSION(KGRID_PAR), INTENT(IN) :: pgrid_par ! grid parameters
57 INTEGER, DIMENSION(KL), INTENT(OUT) :: kleft ! left mesh index
58 INTEGER, DIMENSION(KL), INTENT(OUT) :: kright ! right mesh index
59 INTEGER, DIMENSION(KL), INTENT(OUT) :: ktop ! top mesh index
60 INTEGER, DIMENSION(KL), INTENT(OUT) :: kbottom ! bottom mesh index
61 REAL(KIND=JPRB) :: zhook_handle
62 !
63 !* 0.2 Declaration of other local variables
64 ! ------------------------------------
65 !
66 !----------------------------------------------------------------------------
67 !
68 IF (lhook) CALL dr_hook('GET_ADJACENT_MESHES',0,zhook_handle)
69 SELECT CASE (hgrid)
70 !
71  CASE("CONF PROJ ")
72 
73  CALL get_adj_mes_conf_proj(kgrid_par,kl,pgrid_par,kleft,kright,ktop,kbottom)
74  CASE("CARTESIAN ")
75  CALL get_adj_mes_cart(kgrid_par,kl,pgrid_par,kleft,kright,ktop,kbottom)
76 
77  CASE("LONLAT REG")
78  CALL get_adj_mes_lonlat_reg(kgrid_par,kl,pgrid_par,kleft,kright,ktop,kbottom)
79 
80  CASE("GAUSS ")
81  CALL get_adj_mes_gauss(kgrid_par,kl,pgrid_par,kleft,kright,ktop,kbottom)
82 
83  CASE("IGN ")
84  CALL get_adj_mes_ign(kgrid_par,kl,pgrid_par,kleft,kright,ktop,kbottom)
85 
86  CASE("LONLATVAL ")
87  CALL get_adj_mes_lonlatval(kgrid_par,kl,pgrid_par,kleft,kright,ktop,kbottom)
88 
89  CASE("LONLAT ROT")
90  CALL get_adj_mes_lonlat_rot(kgrid_par,kl,pgrid_par,kleft,kright,ktop,kbottom)
91 
92  CASE("NONE ")
93  kleft(:) = 0
94  kright(:) = 0
95  ktop(:) = 0
96  kbottom(:) = 0
97 
98 END SELECT
99 IF (lhook) CALL dr_hook('GET_ADJACENT_MESHES',1,zhook_handle)
100 !
101 !-------------------------------------------------------------------------------
102 !
103 END SUBROUTINE get_adjacent_meshes
subroutine get_adj_mes_conf_proj(KGRID_PAR, KL, PGRID_PAR, KLEFT, KRIGHT, KTOP, KBOTTOM)
subroutine get_adjacent_meshes(HGRID, KGRID_PAR, KL, PGRID_PAR, KLEFT, KRIGHT, KTOP, KBOTTOM)
subroutine get_adj_mes_lonlat_reg(KGRID_PAR, KL, PGRID_PAR, KLEFT, KRIGHT, KTOP, KBOTTOM)
subroutine get_adj_mes_ign(KGRID_PAR, KL, PGRID_PAR, KLEFT, KRIGHT, KTOP, KBOTTOM)
subroutine get_adj_mes_gauss(KGRID_PAR, KL, PGRID_PAR, KLEFT, KRIGHT, KTOP, KBOTTOM)
subroutine get_adj_mes_cart(KGRID_PAR, KL, PGRID_PAR, KLEFT, KRIGHT, KTOP, KBOTTOM)
subroutine get_adj_mes_lonlat_rot(KGRID_PAR, KL, PGRID_PAR, KLEFT, KRIGHT, KTOP, KBOTTOM)
subroutine get_adj_mes_lonlatval(KGRID_PAR, KL, PGRID_PAR, KLEFT, KRIGHT, KTOP, KBOTTOM)