SURFEX v8.1
General documentation of Surfex
jsort.F
Go to the documentation of this file.
1 #ifdef RS6K
2 
3 !-- Thanks to John Hague (IBM) and Deborah Salmond (ECMWF) -- 2002
4 ! real --> real*8 by Sami Saarinen, ECMWF, 16-Jan-2004
5 
6  SUBROUTINE jdsort(N, ISTRIDE, IPTR, C, INDEX)
7 !
8 !**C* *JDSORT* - interface to IBM essl dsorts
9 !
10 !**C INTERFACE.
11 ! ----------
12 !
13 ! *CALL* *JDSORT(N,ISTRIDE, IPTR, C, INDEX)
14 ! N = number of elements to be sorted
15 ! ISTRIDE = stride
16 ! IPTR = start address
17 ! C = array to be sorted
18 ! INDEX = index into array
19 !
20  USE parkind1, ONLY : jprb
21 
22  IMPLICIT NONE
23  INTEGER N,ISTRIDE, IPTR
24  REAL(KIND=JPRB) :: C(*)
25  INTEGER INDEX(n)
26 
27 ! local variables
28 
29  INTEGER I,J,IXX(n),IX(n)
30  REAL(KIND=JPRB) :: CC(n)
31  REAL(KIND=JPRB) :: W(n/2+1)
32 
33  DO i=1,n
34  j=(i-1)*istride+1
35  cc(i)=c(iptr+(index(i)-1)*istride)
36  ixx(i)=index(i)
37  ENDDO
38  CALL dsorts(cc,1,n,ix,w,SIZE(w))
39  DO i=1,n
40  index(i)=ixx(ix(i))
41  ENDDO
42  RETURN
43  END SUBROUTINE jdsort
44 
45 
46  SUBROUTINE jisort(N, ISTRIDE, IPTR, C, INDEX)
47 !
48 !**** *JISORT* - interface to IBM essl isorts
49 !
50 !** INTERFACE.
51 ! ----------
52 !
53 ! *CALL* *JISORT(N,ISTRIDE, IPTR, C, INDEX)
54 ! N = number of elements to be sorted
55 ! ISTRIDE = stride
56 ! IPTR = start address
57 ! C = array to be sorted
58 ! INDEX = index into array
59 !
60  IMPLICIT NONE
61  INTEGER N,ISTRIDE, IPTR
62  INTEGER C(*),INDEX(n)
63 
64 ! local variables
65 
66  INTEGER CC(n)
67  INTEGER I,J,IXX(n),IX(n)
68  INTEGER W(n/2+1)
69 
70  DO i=1,n
71  j=(i-1)*istride+1
72  cc(i)=c(iptr+(index(i)-1)*istride)
73  ixx(i)=index(i)
74  ENDDO
75  CALL isorts(cc,1,n,ix,w,SIZE(w))
76  DO i=1,n
77  index(i)=ixx(ix(i))
78  ENDDO
79  RETURN
80  END SUBROUTINE jisort
81 #else
82 !-- other machines --
83  SUBROUTINE jsort_dummy()
84  END SUBROUTINE jsort_dummy
85 #endif
86 
subroutine jdsort(N, ISTRIDE, IPTR, C, INDEX)
Definition: jsort.F:7
subroutine jisort(N, ISTRIDE, IPTR, C, INDEX)
Definition: jsort.F:47
integer, parameter jprb
Definition: parkind1.F90:32
subroutine jsort_dummy()
Definition: jsort.F:84