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, KRIG