35 2 INTLIST ,NBINTC ,X ,IADS ,
36 3 FORNEQS ,FORNEQSKY,ITAB ,IXS ,
37 4 IADS10 ,IADS20 ,IADS16 ,NFACNIT )
44 use element_mod ,
only : nixs
48#include "implicit_f.inc"
57 INTEGER IPARIT, NBINTC, NFACNIT
58 INTEGER IPARI(NPARI,*) ,INTLIST(*) ,IADS(8,*) ,ITAB(*),IXS(NIXS,*),
61 TYPE(intbuf_struct_) INTBUF_TAB(*)
65 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: ITAG
66 INTEGER I ,NI ,NIN ,NTY ,NSN ,NRTS ,SN ,IE ,NF ,N1 ,N2 ,N3 ,N4 ,
67 . N ,K1 ,K2 ,K3 ,K4 ,INTNITSCHE ,ADS1 ,ADS2 ,ADS3 ,ADS4 ,IE10,
70 . sx1 ,sy1 ,sz1 ,sx2 ,sy2 ,sz2
71 . sz3 ,forx ,fory ,forz,
78 ALLOCATE(itag(numnod))
86 intnitsche = ipari(86,nin)
87 IF(nty==24 .AND.intnitsche > 0)
THEN
89 ie = intbuf_tab(nin)%IELNRTS(i)
91 ns1 = intbuf_tab(nin)%IRECTS(4*(i-1)+1)
92 ns2 = intbuf_tab(nin)%IRECTS(4*(i-1)+2)
93 ns3 = intbuf_tab(nin)%IRECTS(4*(i-1)+3)
94 ns4 = intbuf_tab(nin)%IRECTS(4*(i-1)+4)
96 n1 = intbuf_tab(nin)%NSV(ns1)
97 n2 = intbuf_tab(nin)%NSV(ns2)
98 n3 = intbuf_tab(nin)%NSV(ns3)
99 n4 = intbuf_tab(nin)%NSV(ns4)
101 ads1 = intbuf_tab(nin)%ADRECTS(4*(i-1)+1)
102 ads2 = intbuf_tab(nin)%ADRECTS(4*(i-1)+2)
103 ads3 = intbuf_tab(nin)%ADRECTS(4*(i-1)+3)
104 ads4 = intbuf_tab(nin)%ADRECTS(4*(i-1)+4)
109 sx1 = x(1,n3) - x(1,n1)
110 sy1 = x(2,n3) - x(2,n1)
111 sz1 = x(3,n3) - x(3,n1)
112 sx2 = x(1,n4) - x(1,n2)
113 sy2 = x(2,n4) - x(2,n2)
114 sz2 = x(3,n4) - x(3,n2)
115 sx3 = sy1*sz2 - sz1*sy2
116 sy3 = sz1*sx2 - sx1*sz2
117 sz3 = sx1*sy2 - sy1*sx2
121 signx = stressmean(1,ie)*sx3 + stressmean(4,ie)*sy3 +stressmean(6,ie)*sz3
122 signy = stressmean(4,ie)*sx3 + stressmean(2,ie)*sy3 +stressmean(5,ie)*sz3
123 signz = stressmean(6,ie)*sx3
128 forx = one_over_16*signx
129 fory = one_over_16*signy
130 forz = one_over_16*signz
133 IF(itag(n1)==0.AND.ads1 < 10)
THEN
134 forneqs(1,n1) = forneqs(1,n1) + forx
135 forneqs(2,n1) = forneqs(2,n1) + fory
136 forneqs(3,n1) = forneqs(3,n1) + forz
137 ELSEIF(itag(n1)==0)
THEN
138 forneqs(1,n1) = forneqs(1,n1) + half*forx
139 forneqs(2,n1) = forneqs(2,n1) + half*fory
140 forneqs(3,n1) = forneqs(3,n1) + half*forz
142 IF(itag(n2)==0.AND.ads2 < 10)
THEN
143 forneqs(1,n2) = forneqs(1,n2) + forx
144 forneqs(2,n2) = forneqs(2,n2) + fory
145 forneqs(3,n2) = forneqs(3,n2) + forz
146 ELSEIF(itag(n2)==0)
THEN
147 forneqs(1,n2) = forneqs(1,n2) + half*forx
148 forneqs(2,n2) = forneqs(2,n2) + half*fory
149 forneqs(3,n2) = forneqs(3,n2) + half*forz
151 IF(itag(n3)==0.AND.ads3 < 10)
THEN
152 forneqs(1,n3) = forneqs(1,n3) + forx
153 forneqs(2,n3) = forneqs(2,n3) + fory
154 forneqs(3,n3) = forneqs(3,n3) + forz
155 ELSEIF(itag(n3)==0)
THEN
156 forneqs(1,n3) = forneqs(1,n3) + half*forx
157 forneqs(2,n3) = forneqs(2,n3) + half*fory
158 forneqs(3,n3) = forneqs(3,n3)
160 IF (itag(n4)==0.AND.ads1 < 10)
THEN
161 forneqs(1,n4) = forneqs(1,n4) + forx
162 forneqs(2,n4) = forneqs(2,n4) + fory
163 forneqs(3,n4) = forneqs(3,n4) + forz
164 ELSEIF(itag(n4)==0)
THEN
165 forneqs(1,n4) = forneqs(1,n4) + half*forx
166 forneqs(2,n4) = forneqs(2,n4) + half*fory
167 forneqs(3,n4) = forneqs(3,n4) + half*forz
172 sx1 = x(1,n2) - x(1,n1)
173 sy1 = x(2,n2) - x(2,n1)
174 sz1 = x(3,n2) - x(3,n1)
175 sx2 = x(1,n3) - x(1,n1)
176 sy2 = x(2,n3) - x(2,n1)
177 sz2 = x(3,n3) - x(3,n1)
178 sx3 = sy1*sz2 - sz1*sy2
179 sy3 = sz1*sx2 - sx1*sz2
180 sz3 = sx1*sy2 - sy1*sx2
183 signx = stressmean(1,ie)*sx3 + stressmean(4,ie)*sy3 +stressmean(6,ie)*sz3
184 signy = stressmean(4,ie)*sx3 + stressmean(2,ie)*sy3 +stressmean(5,ie)*sz3
185 signz = stressmean(6,ie)*sx3 + stressmean(5,ie)*sy3
188 forx = one_over_8*signx
189 fory = one_over_8*signy
192 IF(itag(n1)==0.AND.ads1 < 10)
THEN
193 forneqs(1,n1) = forneqs(1,n1) + forx
194 forneqs(2,n1) = forneqs(2,n1) + fory
195 forneqs(3,n1) = forneqs(3,n1) + forz
196 ELSEIF(itag(n1)==0)
THEN
197 forneqs(1,n1) = forneqs(1,n1) + third*forx
199 forneqs(3,n1) = forneqs(3,n1) + third*forz
201 IF(itag(n2)==0.AND.ads2 < 10)
THEN
202 forneqs(1,n2) = forneqs(1,n2) + forx
203 forneqs(2,n2) = forneqs(2,n2) + fory
204 forneqs(3,n2) = forneqs(3,n2) + forz
205 ELSEIF(itag(n2)==0)
THEN
206 forneqs(1,n2) = forneqs(1,n2) + third*forx
207 forneqs(2,n2) = forneqs(2,n2) + third*fory
208 forneqs(3,n2) = forneqs(3,n2) + third*forz
210 IF(itag(n3)==0.AND.ads3 < 10)
THEN
211 forneqs(1,n3) = forneqs(1,n3) + forx
212 forneqs(2,n3) = forneqs(2,n3) + fory
213 forneqs(3,n3) = forneqs(3,n3) + forz
214 ELSEIF(itag(n3)==0)
THEN
215 forneqs(1,n3) = forneqs(1,n3) + third*forx
216 forneqs(2,n3) = forneqs(2,n3) + third
225 sn = intbuf_tab(nin)%NSV(n)
238 intnitsche = ipari(86,nin)
239 IF(nty==24 .AND.intnitsche > 0)
THEN
241 ie = intbuf_tab(nin)%IELNRTS(i)
242 nf = intbuf_tab(nin)%FACNRTS(i)
243 ns1 = intbuf_tab(nin)%IRECTS(4*(i-1)+1)
244 ns2 = intbuf_tab(nin)%IRECTS(4*(i-1)+2)
245 ns3 = intbuf_tab(nin)%IRECTS(4*(i-1)+3)
246 ns4 = intbuf_tab(nin)%IRECTS(4*(i-1)+4)
248 n1 = intbuf_tab(nin)%NSV(ns1)
249 n2 = intbuf_tab(nin)%NSV(ns2)
250 n3 = intbuf_tab(nin)%NSV(ns3)
251 n4 = intbuf_tab(nin)%NSV(ns4)
253 ads1 = intbuf_tab(nin)%ADRECTS(4*(i-1)+1)
254 ads2 = intbuf_tab(nin)%ADRECTS(4*(i-1)+2)
255 ads3 = intbuf_tab(nin)%ADRECTS(4*(i-1)+3)
256 ads4 = intbuf_tab(nin)%ADRECTS(4*(i-1)+4)
262 sx1 = x(1,n3) - x(1,n1)
263 sy1 = x(2,n3) - x(2,n1)
264 sz1 = x(3,n3) - x(3,n1)
265 sx2 = x(1,n4) - x(1,n2)
266 sy2 = x(2,n4) - x(2,n2)
267 sz2 = x(3,n4) - x(3,n2)
268 sx3 = sy1*sz2 - sz1*sy2
269 sy3 = sz1*sx2 - sx1*sz2
270 sz3 = sx1*sy2 - sy1*sx2
273 signx = stressmean(1,ie)*sx3 + stressmean(4,ie)*sy3 +stressmean(6,ie)*sz3
274 signy = stressmean(4,ie)*sx3 + stressmean(2,ie)*sy3 +stressmean(5,ie)*sz3
275 signz = stressmean(6,ie)*sx3 + stressmean(5,ie)*sy3 +stressmean(3,ie)*sz3
278 forx = one_over_16*signx
279 fory = one_over_16*signy
280 forz = one_over_16*signz
285 ELSEIF(ads1 < 40)
THEN
286 k1 = iads20(ads1-20,ie)
287 ELSEIF(ads1 < 50)
THEN
288 k1 = iads16(ads1-40,ie)
293 ELSEIF(ads1 < 40)
THEN
294 k2 = iads20(ads2-20,ie)
295 ELSEIF(ads1 < 50)
THEN
296 k2 = iads16(ads2-40,ie)
301 ELSEIF(ads3 < 40)
THEN
302 k3 = iads20(ads3-20,ie)
303 ELSEIF(ads3 < 50)
THEN
304 k3 = iads16(ads3-40,ie)
309 ELSEIF(ads3 < 40)
THEN
310 k4 = iads20(ads4-20,ie)
311 ELSEIF(ads1 < 50)
THEN
312 k4 = iads16(ads4-40,ie)
317 forneqsky(3*(nf-1)+1,k1) = forx
318 forneqsky(3*(nf-1)+2,k1) = fory
319 forneqsky(3*(nf-1)+3,k1) = forz
321 forneqsky(3*(nf-1)+1,k1) = half*forx
322 forneqsky(3*(nf-1)+2,k1) = half*fory
323 forneqsky(3*(nf-1)+3,k1) = half*forz
327 forneqsky(3*(nf-1)+1,k2) = forx
328 forneqsky(3*(nf-1)+2,k2) = fory
329 forneqsky(3*(nf-1)+3,k2) = forz
331 forneqsky(3*(nf-1)+1,k2) = half*forx
332 forneqsky(3*(nf-1)+2,k2) = half*fory
333 forneqsky(3*(nf-1)+3,k2) = half*forz
337 forneqsky(3*(nf-1)+1,k3) = forx
338 forneqsky(3*(nf-1)+2,k3) = fory
339 forneqsky(3*(nf-1)+3,k3) = forz
341 forneqsky(3*(nf-1)+1,k3) = half*forx
342 forneqsky(3*(nf-1)+2,k3) = half*fory
343 forneqsky(3*(nf-1)+3,k3) = half*forz
347 forneqsky(3*(nf-1)+1,k4) = forx
348 forneqsky(3*(nf-1)+2,k4) = fory
349 forneqsky(3*(nf-1)+3,k4) = forz
351 forneqsky(3*(nf-1)+1,k4) = half*forx
352 forneqsky(3*(nf-1)+2,k4) = half*fory
353 forneqsky(3*(nf-1)+3,k4) = half*forz
358 sx1 = x(1,n2) - x(1,n1)
359 sy1 = x(2,n2) - x(2,n1)
360 sz1 = x(3,n2) - x(3,n1)
361 sx2 = x(1,n3) - x(1,n1)
362 sy2 = x(2,n3) - x(2,n1)
363 sz2 = x(3,n3) - x(3,n1)
364 sx3 = sy1*sz2 - sz1*sy2
365 sy3 = sz1*sx2 - sx1*sz2
366 sz3 = sx1*sy2 - sy1*sx2
369 signx = stressmean(1,ie)*sx3 + stressmean(4,ie)*sy3 +stressmean(6,ie)*sz3
370 signy = stressmean(4,ie)*sx3 + stressmean(2,ie)*sy3 +stressmean(5,ie)*sz3
371 signz = stressmean(6,ie)*sx3 + stressmean(5,ie)*sy3 +stressmean(3,ie)*sz3
374 forx = one_over_8*signx
375 fory = one_over_8*signy
376 forz = one_over_8*signz
378 IF(ie > numels8) ie10 = ie - numels8
383 k1 = iads10(ads1-10,ie10)
389 k2 = iads10(ads2-10,ie10)
395 k3 = iads10(ads3-10,ie10)
400 forneqsky(3*(nf-1)+1,k1) = forx
401 forneqsky(3*(nf-1)+2,k1) = fory
402 forneqsky(3*(nf-1)+3,k1) = forz
404 forneqsky(3*(nf-1)+1,k1) = third*forx
405 forneqsky(3*(nf-1)+2,k1) = third*fory
406 forneqsky(3*(nf-1)+3,k1) = third*forz
410 forneqsky(3*(nf-1)+1,k2) = forx
411 forneqsky(3*(nf-1)+2,k2) = fory
412 forneqsky(3*(nf-1)+3,k2) = forz
414 forneqsky(3*(nf-1)+1,k2) = third*forx
415 forneqsky(3*(nf-1)+2,k2) = third*fory
416 forneqsky(3*(nf-1)+3,k2) = third*forz
420 forneqsky(3*(nf-1)+1,k3) = forx
421 forneqsky(3*(nf-1)+2,k3) = fory
422 forneqsky(3*(nf-1)+3,k3) = forz
424 forneqsky(3*(nf-1)+1,k3) = third*forx
425 forneqsky(3*(nf-1)+2,k3) = third*fory
426 forneqsky(3*(nf-1)+3,k3) = third*forz
436 sn = intbuf_tab(nin)%NSV(n)