32
33
34
35
36
37
38#include "implicit_f.inc"
39
40
41
42 INTEGER,INTENT(IN) :: SIRECT
43 INTEGER,INTENT(IN) :: S_N2SEG
44 INTEGER, INTENT(IN) :: NMN, NSN, NRT
45 INTEGER, INTENT(IN) :: IRECT(4,SIRECT/4)
46 INTEGER, INTENT(IN) :: NSEG(*), NSV(*), MSR(*)
47 INTEGER, INTENT(INOUT) :: NOD2SEG(S_N2SEG)
48 INTEGER, INTENT(INOUT) :: ILOC(*)
50
51
52
53 INTEGER II, I, JJ, J, KK, L1, L2, L
55 LOGICAL lFOUND
56
57
58
59 IF(nrt == 0) RETURN
60
61
62
63 kk = 0
64
65
66
67 DO ii=1,nmn
68 i=msr(ii)
69 lower_dist = ep20
70 DO jj=1,nsn
71 j=nsv(jj)
72 dist = (x(1,i)-x(1,j))**2 + (x(2,i)-x(2,j))**2 + (x(3,i)-x(3,j))**2
73 IF(dist <= lower_dist)THEN
74 lower_dist = dist
75 iloc(ii)= jj
76 ENDIF
77 ENDDO
78 ENDDO
79
80
81
82 DO i=1,nrt
83 DO j=1,4
84 IF(irect(j,i) /= 0) THEN
85 lfound=.false.
86 DO kk=1,nsn
87 IF(nsv(kk) == irect(j,i)) THEN
88 lfound = .true.
89 EXIT
90 ENDIF
91 ENDDO
92
93 IF(lfound)THEN
94 ii=0
95 l1=nseg(kk)
96 l2=nseg(kk+1)-1
97 DO l=l1,l2
98 IF(nod2seg(l) /= 0) ii=ii+1
99 ENDDO
100 nod2seg(l1+ii)=i
101 ENDIF
102 ENDIF
103 ENDDO
104 ENDDO
105
106 RETURN