38 USE yomhook
,ONLY : lhook, dr_hook
39 USE parkind1
,ONLY : jprb
46 INTEGER,
INTENT(IN) :: kgrid_par
47 INTEGER,
INTENT(IN) :: kl
48 REAL,
DIMENSION(KGRID_PAR),
INTENT(IN) :: pgrid_par
49 INTEGER,
DIMENSION(KL),
INTENT(OUT) :: kleft
50 INTEGER,
DIMENSION(KL),
INTENT(OUT) :: kright
51 INTEGER,
DIMENSION(KL),
INTENT(OUT) :: ktop
52 INTEGER,
DIMENSION(KL),
INTENT(OUT) :: kbottom
57 REAL,
DIMENSION(KL) :: zx
58 REAL,
DIMENSION(KL) :: zy
59 REAL,
DIMENSION(KL) :: zdx
60 REAL,
DIMENSION(KL) :: zdy
61 REAL :: zecx, zecy, zecdx, zecdy
64 REAL(KIND=JPRB) :: zhook_handle
68 IF (lhook) CALL dr_hook(
'GET_ADJ_MES_LONLATVAL',0,zhook_handle)
81 zecx = abs(zx(jlon)-zx(jlat))
82 zecy = abs(zy(jlon)-zy(jlat))
84 zecdx = (zdx(jlon)+zdx(jlat))/2.
85 zecdy = (zdy(jlon)+zdy(jlat))/2.
87 IF ( zecx <= zecdx .AND. zecy <= zecdy )
THEN
89 IF ( zecdy-zecy <= zecdx-zecx .AND. zecx/=zecdx )
THEN
91 IF ( zy(jlon) < zy(jlat) .AND. &
92 ( kbottom(jlat)==0 .OR. &
93 zecy < abs(zy(max(1,kbottom(jlat)))-zy(jlat)) .OR. &
94 zecx < abs(zx(max(1,kbottom(jlat)))-zx(jlat)) ) )
THEN
98 ELSEIF ( zy(jlon) > zy(jlat) .AND. &
99 ( ktop(jlat)==0 .OR. &
100 zecy < abs(zy(max(1,ktop(jlat)))-zy(jlat)) .OR. &
101 zecx < abs(zx(max(1,ktop(jlat)))-zx(jlat)) ) )
THEN
107 ELSEIF (zecdx-zecx < zecdy-zecy )
THEN
109 IF ( zx(jlon) < zx(jlat) .AND. &
110 ( kleft(jlat)==0 .OR. &
111 zecy < abs(zy(max(1,kleft(jlat)))-zy(jlat)) .OR. &
112 zecx < abs(zx(max(1,kleft(jlat)))-zx(jlat)) ) )
THEN
116 ELSEIF ( zx(jlon) > zx(jlat) .AND. &
117 ( kright(jlat)==0 .OR. &
118 zecy < abs(zy(max(1,kright(jlat)))-zy(jlat)) .OR. &
119 zecx < abs(zx(max(1,kright(jlat)))-zx(jlat)) ) )
THEN
133 IF (lhook) CALL dr_hook(
'GET_ADJ_MES_LONLATVAL',1,zhook_handle)
subroutine get_gridtype_lonlatval(PGRID_PAR, KL, PX, PY, PDX, PDY)
subroutine get_adj_mes_lonlatval(KGRID_PAR, KL, PGRID_PAR, KLEFT, KRIGHT, KTOP, KBOTTOM)