39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "mvsiz_p.inc"
47
48
49
50 INTEGER IRECT(4,*), NSV(*), CAND_E(*), CAND_N(*),
51 . JLT, NSN, IGAP
52 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
53 . NSVG(MVSIZ), ADMSR(4,*),
54 . MVOISIN(4,*), MVOISN(MVSIZ,4), LBOUND(*), IBOUND(4,MVSIZ)
56 . x(3,*), gap_s(*), gaps(mvsiz), gap_m(*), gapm(*),
57 . gap_nm(4,*), gapnm(4,*), gap_s_l(*), gap_m_l(*),
58 . gapmxl(*)
60 . xi(mvsiz), yi(mvsiz), zi(mvsiz),
61 . x1(mvsiz),y1(mvsiz),z1(mvsiz),
62 . x2(mvsiz),y2(mvsiz),z2(mvsiz),
63 . x3(mvsiz),y3(mvsiz),z3(mvsiz),
64 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
65 . x0(mvsiz),y0(mvsiz),z0(mvsiz),
66 . nnx(mvsiz,5), nny(mvsiz,5), nnz(mvsiz,5)
67 real*4 nod_normal(3,4,*)
68
69
70
71 INTEGER I ,J , L, NN, IG, JFT, IX, NI, I1, , I3, I4
73 . xn
74
75 DO i=1,jlt
76 ni = cand_n(i)
77
78 ig = nsv(ni)
79 nsvg(i) = ig
80
81 xi(i) = x(1,ig)
82 yi(i) = x(2,ig)
83 zi(i) = x(3,ig)
84 gaps(i) = gap_s(ni)
85
86 END DO
87
88 DO i=1,jlt
89
90 l = cand_e(i)
91
92 ix=irect(1,l)
93 ix1(i)=ix
94 x1(i)=x(1,ix)
95 y1(i)=x(2,ix)
96 z1(i)=x(3,ix)
97
98 ix=irect(2,l)
99 ix2(i)=ix
100 x2(i)=x(1,ix)
101 y2(i)=x(2,ix)
102 z2(i)=x(3,ix)
103
104 ix=irect(3,l)
105 ix3(i)=ix
106 x3(i)=x(1,ix)
107 y3(i)=x(2,ix)
108 z3(i)=x(3,ix)
109
110 ix=irect(4,l)
111 ix4(i)=ix
112 x4(i)=x(1,ix)
113 y4(i)=x(2,ix)
114 z4(i)=x(3,ix)
115
116 gapm(i) = gap_m(l)
117 gapnm(1:4,i)=gap_nm(1:4,l)
118
119 END DO
120
121 IF(igap/=3)THEN
122 gapmxl(1:jlt)=ep30
123 ELSE
124 DO i=1,jlt
125 ni = cand_n(i)
126 l = cand_e(i)
127 gapmxl(i)=gap_s_l(ni)+gap_m_l(l)
128 END DO
129 END IF
130
131 DO i=1,jlt
132
133 IF(ix3(i) /= ix4(i))THEN
134 x0(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
135 y0(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
136 z0(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
137 ELSE
138 x0(i) = x3(i)
139 y0(i) = y3(i)
140 z0(i) = z3(i)
141 ENDIF
142
143 END DO
144
145 DO i=1,jlt
146
147 l = cand_e(i)
148
149 nnx(i,1)=nod_normal(1,1,l)
150 nny(i,1)=nod_normal(2,1,l)
151 nnz(i,1)=nod_normal(3,1,l)
152
153 nnx(i,2)=nod_normal(1,2,l)
154 nny(i,2)=nod_normal(2,2,l)
155 nnz(i,2)=nod_normal(3,2,l)
156
157 nnx(i,3)=nod_normal(1,3,l)
158 nny(i,3)=nod_normal(2,3,l)
159 nnz(i,3)=nod_normal(3,3,l)
160
161 nnx(i,4)=nod_normal(1,4,l)
162 nny(i,4)=nod_normal(2,4,l)
163 nnz(i,4)=nod_normal(3,4,l)
164
165 END DO
166
167 DO i=1,jlt
168 IF(ix3(i)/=ix4(i))THEN
169 nnx(i,5)=fourth*(nnx(i,1)+nnx(i,2)+nnx(i,3)+nnx(i,4))
170 nny(i,5)=fourth*(nny(i,1)+nny(i,2)+nny(i,3)+nny(i,4))
171 nnz(i,5)=fourth*(nnz(i,1)+nnz(i,2)+nnz(i,3)+nnz(i,4))
172 ELSE
173 nnx(i,5)=nnx(i,4)
174 nny(i,5)=nny(i,4)
175 nnz(i,5)=nnz(i,4)
176 ENDIF
177 xn=one/
max(em20,sqrt(nnx(i,5)*nnx(i,5)+nny(i,5)*nny(i,5)+nnz(i,5)*nnz(i,5)))
178 nnx(i,5)=xn*nnx(i,5)
179 nny(i,5)=xn*nny(i,5)
180 nnz(i,5)=xn*nnz(i,5)
181 END DO
182
183 ibound(1:4,1:jlt)=0
184 DO i=1,jlt
185 l = cand_e(i)
186 DO j=1,4
187 mvoisn(i,j)=mvoisin(j,l)
188 IF(lbound(admsr(j,l))/=0)ibound(j,i)=admsr(j,l)
189 END DO
190 END DO
191
192 RETURN