59 subroutine sorted_inta(isd, ied, jsd, jed, cubed_sphere, bgrid, iinta, jinta)
61 integer,
intent(in) :: isd, ied, jsd, jed
62 real(kind=R_GRID),
intent(in),
dimension(isd:ied+1,jsd:jed+1,2) :: bgrid
63 logical,
intent(in) :: cubed_sphere
65 integer,
intent(out),
dimension(4,isd:ied,jsd:jed) :: iinta, jinta
69 real,
dimension(4) :: xsort, ysort
70 integer,
dimension(4) :: isort, jsort
75 if (cubed_sphere)
then 81 xsort(1)=bgrid(i ,j ,1); ysort(1)=bgrid(i ,j ,2); isort(1)=i ; jsort(1)=j
82 xsort(2)=bgrid(i ,j+1,1); ysort(2)=bgrid(i ,j+1,2); isort(2)=i ; jsort(2)=j+1
83 xsort(3)=bgrid(i+1,j+1,1); ysort(3)=bgrid(i+1,j+1,2); isort(3)=i+1; jsort(3)=j+1
84 xsort(4)=bgrid(i+1,j ,1); ysort(4)=bgrid(i+1,j ,2); isort(4)=i+1; jsort(4)=j
94 iinta(i,j,1)=i ; jinta(i,j,1)=j
95 iinta(i,j,2)=i ; jinta(i,j,2)=j+1
96 iinta(i,j,3)=i+1; jinta(i,j,3)=j+1
97 iinta(i,j,4)=i+1; jinta(i,j,4)=j
105 integer,
dimension(4),
intent(inout) :: iind, jind
109 real,
dimension(4) :: xsorted, ysorted
110 integer,
dimension(4) :: isorted, jsorted
111 integer :: l, ll, lll
122 if (xsort(l)<xsorted(ll))
then 124 xsorted(lll+1)=xsorted(lll)
125 ysorted(lll+1)=ysorted(lll)
126 isorted(lll+1)=isorted(lll)
127 jsorted(lll+1)=jsorted(lll)
141 xsort(l)=xsorted(l); ysort(l)=ysorted(l)
142 isort(l)=isorted(l); jsort(l)=jsorted(l)
151 if (ysort(l)<ysorted(ll))
then 153 xsorted(lll+1)=xsorted(lll)
154 ysorted(lll+1)=ysorted(lll)
155 isorted(lll+1)=isorted(lll)
156 jsorted(lll+1)=jsorted(lll)
169 if ( isorted(1)==i .and. jsorted(1)==j )
then 170 if ( isorted(2)==i+1 .and. jsorted(2)==j+1 )
then 171 isorted(2)=isorted(3); jsorted(2)=jsorted(3)
173 if ( isorted(2)==i .and. jsorted(2)==j+1 )
then 174 iind(1)=i ; jind(1)=j
175 iind(2)=i ; jind(2)=j+1
176 iind(3)=i+1; jind(3)=j+1
177 iind(4)=i+1; jind(4)=j
178 elseif ( isorted(2)==i+1 .and. jsorted(2)==j )
then 179 iind(1)=i ; jind(1)=j
180 iind(2)=i+1; jind(2)=j
181 iind(3)=i+1; jind(3)=j+1
182 iind(4)=i ; jind(4)=j+1
185 elseif ( isorted(1)==i .and. jsorted(1)==j+1 )
then 186 if ( isorted(2)==i+1 .and. jsorted(2)==j )
then 187 isorted(2)=isorted(3); jsorted(2)=jsorted(3)
189 if ( isorted(2)==i+1 .and. jsorted(2)==j+1 )
then 190 iind(1)=i ; jind(1)=j+1
191 iind(2)=i+1; jind(2)=j+1
192 iind(3)=i+1; jind(3)=j
193 iind(4)=i ; jind(4)=j
194 elseif ( isorted(2)==i .and. jsorted(2)==j )
then 195 iind(1)=i ; jind(1)=j+1
196 iind(2)=i ; jind(2)=j
197 iind(3)=i+1; jind(3)=j
198 iind(4)=i+1; jind(4)=j+1
201 elseif ( isorted(1)==i+1 .and. jsorted(1)==j+1 )
then 202 if ( isorted(2)==i .and. jsorted(2)==j )
then 203 isorted(2)=isorted(3); jsorted(2)=jsorted(3)
205 if ( isorted(2)==i+1 .and. jsorted(2)==j )
then 206 iind(1)=i+1; jind(1)=j+1
207 iind(2)=i+1; jind(2)=j
208 iind(3)=i ; jind(3)=j
209 iind(4)=i ; jind(4)=j+1
210 elseif ( isorted(2)==i .and. jsorted(2)==j+1 )
then 211 iind(1)=i+1; jind(1)=j+1
212 iind(2)=i ; jind(2)=j+1
213 iind(3)=i ; jind(3)=j
214 iind(4)=i+1; jind(4)=j
217 elseif ( isorted(1)==i+1 .and. jsorted(1)==j )
then 218 if ( isorted(2)==i .and. jsorted(2)==j+1 )
then 219 isorted(2)=isorted(3); jsorted(2)=jsorted(3)
221 if ( isorted(2)==i .and. jsorted(2)==j )
then 222 iind(1)=i+1; jind(1)=j
223 iind(2)=i ; jind(2)=j
224 iind(3)=i ; jind(3)=j+1
225 iind(4)=i+1; jind(4)=j+1
226 elseif ( isorted(2)==i+1 .and. jsorted(2)==j+1 )
then 227 iind(1)=i+1; jind(1)=j
228 iind(2)=i+1; jind(2)=j+1
229 iind(3)=i ; jind(3)=j+1
230 iind(4)=i ; jind(4)=j
254 subroutine sorted_intb(isd, ied, jsd, jed, is, ie, js, je, npx, npy, &
255 cubed_sphere, agrid, iintb, jintb)
257 integer,
intent(in) :: isd, ied, jsd, jed, is, ie, js, je, npx, npy
258 real(kind=R_GRID),
intent(in),
dimension(isd:ied,jsd:jed,2) :: agrid
259 logical,
intent(in) :: cubed_sphere
261 integer,
dimension(4,is:ie+1,js:je+1),
intent(out) :: iintb, jintb
265 real,
dimension(4) :: xsort, ysort, xsorted, ysorted
266 integer,
dimension(4) :: isort, jsort, isorted, jsorted
267 integer :: i, j, l, ll, lll
271 if (cubed_sphere)
then 277 xsort(1)=agrid(i ,j ,1); ysort(1)=agrid(i ,j ,2); isort(1)=i ; jsort(1)=j
278 xsort(2)=agrid(i ,j-1,1); ysort(2)=agrid(i ,j-1,2); isort(2)=i ; jsort(2)=j-1
279 xsort(3)=agrid(i-1,j-1,1); ysort(3)=agrid(i-1,j-1,2); isort(3)=i-1; jsort(3)=j-1
280 xsort(4)=agrid(i-1,j ,1); ysort(4)=agrid(i-1,j ,2); isort(4)=i-1; jsort(4)=j
287 if ( (is==1) .and. (js==1) )
then 290 xsort(1)=agrid(i ,j ,1); ysort(1)=agrid(i ,j ,2); isort(1)=i ; jsort(1)=j
291 xsort(2)=agrid(i ,j-1,1); ysort(2)=agrid(i ,j-1,2); isort(2)=i ; jsort(2)=j-1
292 xsort(3)=agrid(i-1,j ,1); ysort(3)=agrid(i-1,j ,2); isort(3)=i-1; jsort(3)=j
294 iintb(4,i,j)=i-1; jintb(4,i,j)=j-1
297 if ( (ie+1==npx) .and. (js==1) )
then 300 xsort(1)=agrid(i ,j ,1); ysort(1)=agrid(i ,j ,2); isort(1)=i ; jsort(1)=j
301 xsort(2)=agrid(i-1,j ,1); ysort(2)=agrid(i-1,j ,2); isort(2)=i-1; jsort(2)=j
302 xsort(3)=agrid(i-1,j-1,1); ysort(3)=agrid(i-1,j-1,2); isort(3)=i-1; jsort(3)=j-1
304 iintb(4,i,j)=i; jintb(4,i,j)=j-1
307 if ( (ie+1==npx) .and. (je+1==npy) )
then 310 xsort(1)=agrid(i-1,j-1,1); ysort(1)=agrid(i-1,j-1,2); isort(1)=i-1; jsort(1)=j-1
311 xsort(2)=agrid(i ,j-1,1); ysort(2)=agrid(i ,j-1,2); isort(2)=i ; jsort(2)=j-1
312 xsort(3)=agrid(i-1,j ,1); ysort(3)=agrid(i-1,j ,2); isort(3)=i-1; jsort(3)=j
314 iintb(4,i,j)=i; jintb(4,i,j)=j
317 if ( (is==1) .and. (je+1==npy) )
then 320 xsort(1)=agrid(i ,j ,1); ysort(1)=agrid(i ,j ,2); isort(1)=i ; jsort(1)=j
321 xsort(2)=agrid(i-1,j-1,1); ysort(2)=agrid(i-1,j-1,2); isort(2)=i-1; jsort(2)=j-1
322 xsort(3)=agrid(i ,j-1,1); ysort(3)=agrid(i ,j-1,2); isort(3)=i ; jsort(3)=j-1
324 iintb(4,i,j)=i-1; jintb(4,i,j)=j
332 iintb(1,i,j)=i ; jintb(1,i,j)=j
333 iintb(2,i,j)=i ; jintb(2,i,j)=j-1
334 iintb(3,i,j)=i-1; jintb(3,i,j)=j-1
335 iintb(4,i,j)=i-1; jintb(4,i,j)=j
344 integer,
dimension(4),
intent(inout) :: iind, jind
348 real,
dimension(4) :: xsorted, ysorted
349 integer,
dimension(4) :: isorted, jsorted
360 if (xsort(l)<xsorted(ll))
then 362 xsorted(lll+1)=xsorted(lll)
363 ysorted(lll+1)=ysorted(lll)
364 isorted(lll+1)=isorted(lll)
365 jsorted(lll+1)=jsorted(lll)
379 xsort(l)=xsorted(l); ysort(l)=ysorted(l)
380 isort(l)=isorted(l); jsort(l)=jsorted(l)
389 if (ysort(l)<ysorted(ll))
then 391 xsorted(lll+1)=xsorted(lll)
392 ysorted(lll+1)=ysorted(lll)
393 isorted(lll+1)=isorted(lll)
394 jsorted(lll+1)=jsorted(lll)
407 if ( isorted(1)==i .and. jsorted(1)==j )
then 408 if ( isorted(2)==i-1 .and. jsorted(2)==j-1 )
then 409 isorted(2)=isorted(3); jsorted(2)=jsorted(3)
411 if ( isorted(2)==i .and. jsorted(2)==j-1 )
then 412 iind(1)=i ; jind(1)=j
413 iind(2)=i ; jind(2)=j-1
414 iind(3)=i-1; jind(3)=j-1
415 iind(4)=i-1; jind(4)=j
416 elseif ( isorted(2)==i-1 .and. jsorted(2)==j )
then 417 iind(1)=i ; jind(1)=j
418 iind(2)=i-1; jind(2)=j
419 iind(3)=i-1; jind(3)=j-1
420 iind(4)=i ; jind(4)=j-1
423 elseif ( isorted(1)==i .and. jsorted(1)==j-1 )
then 424 if ( isorted(2)==i-1 .and. jsorted(2)==j )
then 425 isorted(2)=isorted(3); jsorted(2)=jsorted(3)
427 if ( isorted(2)==i-1 .and. jsorted(2)==j-1 )
then 428 iind(1)=i ; jind(1)=j-1
429 iind(2)=i-1; jind(2)=j-1
430 iind(3)=i-1; jind(3)=j
431 iind(4)=i ; jind(4)=j
432 elseif ( isorted(2)==i .and. jsorted(2)==j )
then 433 iind(1)=i ; jind(1)=j-1
434 iind(2)=i ; jind(2)=j
435 iind(3)=i-1; jind(3)=j
436 iind(4)=i-1; jind(4)=j-1
439 elseif ( isorted(1)==i-1 .and. jsorted(1)==j-1 )
then 440 if ( isorted(2)==i .and. jsorted(2)==j )
then 441 isorted(2)=isorted(3); jsorted(2)=jsorted(3)
443 if ( isorted(2)==i-1 .and. jsorted(2)==j )
then 444 iind(1)=i-1; jind(1)=j-1
445 iind(2)=i-1; jind(2)=j
446 iind(3)=i ; jind(3)=j
447 iind(4)=i ; jind(4)=j-1
448 elseif ( isorted(2)==i .and. jsorted(2)==j-1 )
then 449 iind(1)=i-1; jind(1)=j-1
450 iind(2)=i ; jind(2)=j-1
451 iind(3)=i ; jind(3)=j
452 iind(4)=i-1; jind(4)=j
455 elseif ( isorted(1)==i-1 .and. jsorted(1)==j )
then 456 if ( isorted(2)==i .and. jsorted(2)==j-1 )
then 457 isorted(2)=isorted(3); jsorted(2)=jsorted(3)
459 if ( isorted(2)==i .and. jsorted(2)==j )
then 460 iind(1)=i-1; jind(1)=j
461 iind(2)=i ; jind(2)=j
462 iind(3)=i ; jind(3)=j-1
463 iind(4)=i-1; jind(4)=j-1
464 elseif ( isorted(2)==i-1 .and. jsorted(2)==j-1 )
then 465 iind(1)=i-1; jind(1)=j
466 iind(2)=i-1; jind(2)=j-1
467 iind(3)=i ; jind(3)=j-1
468 iind(4)=i ; jind(4)=j
486 if (xsort(l)<xsorted(ll))
then 488 xsorted(lll+1)=xsorted(lll)
489 ysorted(lll+1)=ysorted(lll)
490 isorted(lll+1)=isorted(lll)
491 jsorted(lll+1)=jsorted(lll)
505 xsort(l)=xsorted(l); ysort(l)=ysorted(l)
506 isort(l)=isorted(l); jsort(l)=jsorted(l)
515 if (ysort(l)<ysorted(ll))
then 517 xsorted(lll+1)=xsorted(lll)
518 ysorted(lll+1)=ysorted(lll)
519 isorted(lll+1)=isorted(lll)
520 jsorted(lll+1)=jsorted(lll)
533 iintb(1,i,j)=isorted(1) ; jintb(1,i,j)=jsorted(1)
534 iintb(2,i,j)=isorted(2) ; jintb(2,i,j)=jsorted(2)
535 iintb(3,i,j)=isorted(3) ; jintb(3,i,j)=jsorted(3)
integer, parameter, public r_grid
subroutine, public sorted_intb(isd, ied, jsd, jed, is, ie, js, je, npx, npy, cubed_sphere, agrid, iintb, jintb)
subroutine sort_triangle()
subroutine sort_rectangle(iind, jind)
subroutine, public sorted_inta(isd, ied, jsd, jed, cubed_sphere, bgrid, iinta, jinta)