43 USE yomhook
,ONLY : lhook, dr_hook
44 USE parkind1
,ONLY : jprb
51 INTEGER,
INTENT(IN) :: kgrid_par
52 INTEGER,
INTENT(IN) :: kl
53 INTEGER,
INTENT(IN) :: knear_nbr
54 REAL,
DIMENSION(KGRID_PAR),
INTENT(IN) :: pgrid_par
55 INTEGER,
DIMENSION(:,:),
POINTER :: knear
60 REAL,
DIMENSION(KL) :: zx
61 REAL,
DIMENSION(KL) :: zy
62 REAL,
DIMENSION(KL) :: zdx
63 REAL,
DIMENSION(KL) :: zdy
64 REAL,
DIMENSION(KL) :: zdis
65 INTEGER,
DIMENSION(KL) :: indzdis
70 REAL(KIND=JPRB) :: zhook_handle
74 IF (lhook) CALL dr_hook(
'GET_NEAR_MESHES_IGN_1',0,zhook_handle)
80 isize = min(knear_nbr,kl)
85 IF (lhook) CALL dr_hook(
'GET_NEAR_MESHES_IGN_1',1,zhook_handle)
86 IF (lhook) CALL dr_hook(
'GET_NEAR_MESHES_IGN_2',0,zhook_handle)
93 zdis(:) = sqrt((zx(:)-zx(jp))**2 + (zy(:)-zy(jp))**2)
95 zmaxvaldis = 2. * maxval(zdis)
99 knear(jp,1:isize) = indzdis(1:isize)
104 IF (lhook) CALL dr_hook(
'GET_NEAR_MESHES_IGN_2',1,zhook_handle)
118 REAL,
DIMENSION (:),
INTENT(INOUT) :: plist
119 INTEGER,
DIMENSION (:),
INTENT(OUT) :: korder
124 DO ji = 1,
SIZE(plist)
133 RECURSIVE SUBROUTINE quick_sort_1(KLEFT_END, KRIGHT_END, PLIST1, KORDER1)
135 INTEGER,
INTENT(IN) :: kleft_end, kright_end
136 REAL,
DIMENSION (:),
INTENT(INOUT) :: plist1
137 INTEGER,
DIMENSION (:),
INTENT(INOUT) :: korder1
139 INTEGER :: ji, jj, itemp
141 INTEGER,
PARAMETER :: imax_simple_sort_size = 6
143 IF (kright_end < kleft_end + imax_simple_sort_size)
THEN
151 zref = plist1((kleft_end + kright_end)/2)
159 IF (plist1(ji) >= zref)
EXIT
164 IF (plist1(jj) <= zref)
EXIT
171 plist1(ji) = plist1(jj)
174 korder1(ji) = korder1(jj)
176 ELSE IF (ji == jj)
THEN
184 IF (kleft_end < jj) CALL
quick_sort_1(kleft_end, jj, plist1, korder1)
185 IF (ji < kright_end) CALL
quick_sort_1(ji, kright_end,plist1,korder1)
193 INTEGER,
INTENT(IN) :: kleft_end, kright_end
194 REAL,
DIMENSION (:),
INTENT(INOUT) :: plist2
195 INTEGER,
DIMENSION (:),
INTENT(INOUT) :: korder2
197 INTEGER :: ji, jj, itemp
201 DO ji = kleft_end, kright_end - 1
204 DO jj = ji+1, kright_end
207 IF (plist2(ji) > plist2(jj))
THEN
211 plist2(ji) = plist2(jj)
217 korder2(ji) = korder2(jj)
recursive subroutine quick_sort_1(KLEFT_END, KRIGHT_END, PLIST1, KORDER1)
subroutine get_gridtype_ign(PGRID_PAR, KLAMBERT, KL, PX, PY, PDX, PDY, KDIMX, KDIMY, PXALL, PYALL)
recursive subroutine quick_sort(PLIST, KORDER)
subroutine get_near_meshes_ign(KGRID_PAR, KL, PGRID_PAR, KNEAR_NBR, KNEAR)
subroutine interchange_sort(KLEFT_END, KRIGHT_END, PLIST2, KORDER2)