SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
get_adj_mes_lonlat_reg.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_adj_mes_lonlat_reg(KGRID_PAR,KL,PGRID_PAR,KLEFT,KRIGHT,KTOP,KBOTTOM)
7 ! ##############################################################
8 !
9 !!**** *GET_ADJ_MES_LONLAT_REG* 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 !!
30 !----------------------------------------------------------------------------
31 !
32 !* 0. DECLARATION
33 ! -----------
34 !
36 !
37 !
38 USE yomhook ,ONLY : lhook, dr_hook
39 USE parkind1 ,ONLY : jprb
40 !
41 IMPLICIT NONE
42 !
43 !* 0.1 Declaration of arguments
44 ! ------------------------
45 !
46 INTEGER, INTENT(IN) :: kgrid_par ! size of PGRID_PAR
47 INTEGER, INTENT(IN) :: kl ! number of points
48 REAL, DIMENSION(KGRID_PAR), INTENT(IN) :: pgrid_par ! grid parameters
49 INTEGER, DIMENSION(KL), INTENT(OUT) :: kleft ! left mesh index
50 INTEGER, DIMENSION(KL), INTENT(OUT) :: kright ! right mesh index
51 INTEGER, DIMENSION(KL), INTENT(OUT) :: ktop ! top mesh index
52 INTEGER, DIMENSION(KL), INTENT(OUT) :: kbottom ! bottom mesh index
53 !
54 !* 0.2 Declaration of other local variables
55 ! ------------------------------------
56 !
57 REAL :: zlonmin ! minimum longitude (degrees)
58 REAL :: zlonmax ! maximum longitude (degrees)
59 REAL :: zlatmin ! minimum latitude (degrees)
60 REAL :: zlatmax ! maximum latitude (degrees)
61 INTEGER :: ilon ! number of points in longitude
62 INTEGER :: ilat ! number of points in latitude
63 INTEGER :: jlat, jlon
64 INTEGER :: jl
65 REAL(KIND=JPRB) :: zhook_handle
66 !----------------------------------------------------------------------------
67 !
68 IF (lhook) CALL dr_hook('GET_ADJ_MES_LONLAT_REG',0,zhook_handle)
69  CALL get_gridtype_lonlat_reg(pgrid_par,zlonmin,zlonmax, &
70  zlatmin,zlatmax,ilon,ilat )
71 !
72 kleft(:) = 0
73 kright(:) = 0
74 ktop(:) = 0
75 kbottom(:) = 0
76 !
77 IF (ilon*ilat==kl) THEN
78  DO jlat=1,ilat
79  DO jlon=1,ilon
80  jl = jlon + ilon * (jlat-1)
81  IF (jlon>1 ) kleft(jl) = jl-1
82  IF (jlon<ilon) kright(jl) = jl+1
83  IF (jlat>1 ) kbottom(jl) = jl-ilon
84  IF (jlat<ilat) ktop(jl) = jl+ilon
85  IF (jlon==1 .AND. zlonmin + 360. == zlonmax) kleft(jl) = jl+ilon-1
86  IF (jlon==ilon .AND. zlonmin + 360. == zlonmax) kright(jl) = jl-ilon+1
87  END DO
88  END DO
89 END IF
90 IF (lhook) CALL dr_hook('GET_ADJ_MES_LONLAT_REG',1,zhook_handle)
91 !
92 !-------------------------------------------------------------------------------
93 !
94 END SUBROUTINE get_adj_mes_lonlat_reg
subroutine get_adj_mes_lonlat_reg(KGRID_PAR, KL, PGRID_PAR, KLEFT, KRIGHT, KTOP, KBOTTOM)
subroutine get_gridtype_lonlat_reg(PGRID_PAR, PLONMIN, PLONMAX, PLATMIN, PLATMAX, KLON, KLAT, KL, PLON, PLAT)