31
32
33
34
35
36
37
38
39
40
41
42
43
44#include "implicit_f.inc"
45
46
47
48 INTEGER ,INTENT(IN) :: NFUNC
49 INTEGER ,INTENT(IN) :: LMAX
50 INTEGER ,INTENT(INOUT) :: NPT
51 INTEGER ,DIMENSION(NFUNC) ,INTENT(IN) :: LEN
52 my_real ,
DIMENSION(LMAX,NFUNC) ,
INTENT(IN) :: xi
53 my_real ,
DIMENSION(NPT) ,
INTENT(OUT) :: xf
54
55
56
57 INTEGER :: I,LTOT,LL,IDX,IERROR
58 my_real :: x1,x2,xc,y1,y2,dx,dx1,deri
59 my_real ,
DIMENSION(:) ,
ALLOCATABLE :: xtmp
60 INTEGER, DIMENSION(:), ALLOCATABLE :: PERM
61
62 ltot = npt
63 ALLOCATE (perm(ltot))
64 ALLOCATE (xtmp(ltot))
65 xf(:) = zero
66 xtmp(:) = zero
67 idx = 0
68 DO i = 1,nfunc
69 ll = len(i)
70 xtmp(idx+1:idx+ll) = xi(1:ll,i)
71 idx = idx + ll
72 END DO
73
74 CALL myqsort(ltot,xtmp,perm,ierror)
75
76
77
78 npt = 1
79 xf(1) = xtmp(1)
80 DO i = 2,ltot
81 IF (xtmp(i) > xf(npt)) THEN
82 npt = npt + 1
83 xf(npt) = xtmp(i)
84 END IF
85 END DO
86
87 DEALLOCATE (xtmp)
88 DEALLOCATE (perm)
89
90 RETURN
subroutine myqsort(n, a, perm, error)