33 SUBROUTINE i7lagm(LLL ,JLL ,SLL ,XLL ,IADLL ,
34 2 N_MUL_MX,ITASK ,NINT ,NKMAX ,
35 3 JLT ,A ,V ,ITAG ,XTAG ,
36 4 GAP ,NOINT ,STFN ,ITAB ,CN_LOC ,
37 5 NX1 ,NX2 ,NX3 ,NX4 ,NY1 ,
38 6 NY2 ,NY3 ,NY4 ,NZ1 ,NZ2 ,
39 7 NZ3 ,NZ4 ,LB1 ,LB2 ,LB3 ,
40 8 LB4 ,LC1 ,LC2 ,LC3 ,LC4 ,
42 A IX1 ,IX2 ,IX3 ,IX4 ,NSVG ,
43 B GAPV ,NEWFRONT,IBAG ,ICONTACT,STIF ,
52#include "implicit_f.inc"
63 COMMON /lagglob/n_mult
68 INTEGER N_MUL_MX,ITASK,ITIED,NINT,NKMAX ,
69 . LLL(*),JLL(*),SLL(*),IADLL(*),COMNTAG(*)
72 . V(3,*),XLL(*),A(3,*),XTAG(*)
73 INTEGER JLT, IBAG ,NOINT,NEWFRONT, IADM
74 INTEGER ITAB(*),ICONTACT(*),ITAG(*)
75 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
76 . NSVG(MVSIZ), CN_LOC(MVSIZ)
80 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
81 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
82 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
83 . lb1(mvsiz), lb2(mvsiz), lb3(mvsiz), lb4(mvsiz),
84 . lc1(mvsiz), lc2(mvsiz), lc3(mvsiz), lc4(mvsiz),
85 . p1(mvsiz), p2(mvsiz), p3(mvsiz), p4(mvsiz), stif(mvsiz),
90 INTEGER I,J,K,IK,IE,IS,IC,NK,III(MVSIZ,17),LLT,NFT,LE,FIRST,LAST,
93 . AA,XMIN,YMIN,ZMIN,XMAX,YMAX,ZMAX
96 . NX(MVSIZ), NY(MVSIZ), NZ(MVSIZ), PENE(MVSIZ),
97 . H1(MVSIZ), H2(MVSIZ), H3(MVSIZ), H4(MVSIZ),
98 . VX(MVSIZ), VY(MVSIZ), VZ(MVSIZ), VN(MVSIZ),
99 . H0, LA1, LA2, LA3, LA4,D1,D2,D3,D4,A1,A2,A3,
160 p1(i) =
max(zero, gapv(i) - d1)
163 p2(i) =
max(zero, gapv(i) - d2)
166 p3(i) =
max(zero, gapv(i) - d3)
169 p4(i) =
max(zero, gapv(i) - d4)
171 a1 = p1(i)/
max(em20,d1)
172 a2 = p2(i)/
max(em20,d2)
173 a3 = p3(i)/
max(em20,d3)
174 a4 = p4(i)/
max(em20,d4)
175 nx(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
176 ny(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
177 nz(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
181 IF(ix3(i)/=ix4(i))
THEN
182 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
184 la1 = one - lb1(i) - lc1(i)
185 la2 = one - lb2(i) - lc2(i)
186 la3 = one - lb3(i) - lc3(i)
187 la4 = one - lb4(i) - lc4(i)
190 . (p1(i)*la1 + p2(i)*la2 + p3(i)*la3 + p4(i)*la4)
191 h1(i) = h0 + p1(i) * lb1(i) + p4(i) * lc4(i)
192 h2(i) = h0 + p2(i) * lb2(i) + p1(i) * lc1(i)
193 h3(i) = h0 + p3(i) * lb3(i) + p2(i) * lc2(i)
194 h4(i) = h0 + p4(i) * lb4(i) + p3(i) * lc3(i)
195 h0 = 1./
max(em20,h1(i) + h2(i) + h3(i) + h4(i))
208 h3(i) = one - lb1(i) - lc1(i)
229 IF( (gapv(i)-pene(i))/gapv(i) <em10 .AND. stif(i)>zero)
THEN
233 stfn(cn_loc(i)) = -abs(stfn(cn_loc(i)))
235 WRITE(istdo,
'(A,I8)')
' WARNING INTERFACE ',noint
236 WRITE(istdo,
'(A,I8,A)')
' NODE ',itab(nsvg(i)),
237 .
' DE-ACTIVATED FROM INTERFACE'
238 WRITE(iout ,
'(A,I8)')
' WARNING INTERFACE ',noint
239 WRITE(iout ,
'(A,I8,A)')
' NODE ',itab(nsvg(i)),
240 .
' DE-ACTIVATED FROM INTERFACE'
241#include "lockoff.inc"
247 vx(i) = v(1,ig)+dt12*a(1,ig)
248 . - h1(i)*(v(1,ix1(i))+dt12*a(1,ix1(i)))
249 . - h2(i)*(v(1,ix2(i))+dt12*a(1,ix2(i)))
250 . - h3(i)*(v(1,ix3(i))+dt12*a(1,ix3(i)))
251 . - h4(i)*(v(1,ix4(i))+dt12*a(1,ix4(i)))
252 vy(i) = v(2,ig)+dt12*a(2,ig)
253 . - h1(i)*(v(2,ix1(i))+dt12*a(2,ix1(i)))
254 . - h2(i)*(v(2,ix2(i))+dt12*a(2,ix2(i)))
255 . - h3(i)*(v(2,ix3(i))+dt12*a(2,ix3(i)))
256 . - h4(i)*(v(2,ix4(i))+dt12*a(2,ix4(i)))
257 vz(i) = v(3,ig)+dt12*a(3,ig)
258 . - h1(i)*(v(3,ix1(i))+dt12*a(3,ix1(i)))
259 . - h2(i)*(v(3,ix2(i))+dt12*a(3,ix2(i)))
260 . - h3(i)*(v(3,ix3(i))+dt12*a(3,ix3(i)))
261 . - h4(i)*(v(3,ix4(i))+dt12*a(3,ix4(i)))
262 vn(i) = nx(i)*vx(i) + ny(i)*vy(i) + nz(i)*vz(i)
264 IF(stif(i)/=zero.AND.pene(i)>zero.AND.vn(i)<xtag(ig))
THEN
265 aa = one/sqrt(nx(i)*nx(i)+ny(i)*ny(i)+nz(i)*nz(i))
269 IF(itag(nsvg(i))==0)
then
271 itag(nsvg(i)) = n_mult
272 xtag(nsvg(i)) = vn(i)
273 IF(n_mult > n_mul_mx)
THEN
274#include "lockoff.inc"
275 CALL ancmsg(msgid=95,anmode=aninfo)
278 iadll(n_mult+1)=iadll(n_mult) + 15
279 IF(iadll(n_mult+1)-1 > nkmax)
THEN
280#include "lockoff.inc"
281 CALL ancmsg(msgid=96,anmode=aninfo,
282 . i1=iadll(n_mult+1)-1,
286 iad = iadll(n_mult) - 1
288 xtag(nsvg(i)) = vn(i)
289 iad = iadll(itag(nsvg(i))) - 1
291 comntag(ll)= comntag(ll) - 1
293 comntag(ll)= comntag(ll) - 1
295 comntag(ll)= comntag(ll) - 1
297 comntag(ll)= comntag(ll) - 1
299 comntag(ll)= comntag(ll) - 1
305 xll(iad+1) = nx(i)*h1(i)
310 xll(iad+2) = nx(i)*h2(i)
315 xll(iad+3) = nx(i)*h3(i)
320 xll(iad+4) = nx(i)*h4(i)
330 xll(iad+6) = ny(i)*h1(i)
335 xll(iad+7) = ny(i)*h2(i)
340 xll(iad+8) = ny(i)*h3(i)
347 lll(iad+10) = nsvg(i)
355 xll(iad+11) = nz(i)*h1(i)
360 xll(iad+12) = nz(i)*h2(i)
365 xll(iad+13) = nz(i)*h3(i)
370 xll(iad+14) = nz(i)*h4(i)
372 lll(iad+15) = nsvg(i)
378 comntag(ll) = comntag(ll) + 1
380 comntag(ll) = comntag
382 comntag(ll) = comntag
384 comntag(ll) = comntag(ll) + 1
386 comntag(ll) = comntag(ll) + 1
389#include "lockoff.inc"
392 IF(ibag/=0.OR.iadm/=0)
THEN
394 IF(pene(i)/=zero)
THEN
subroutine i7lagm(lll, jll, sll, xll, iadll, n_mul_mx, itask, nint, nkmax, jlt, a, v, itag, xtag, gap, noint, stfn, itab, cn_loc, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, p1, p2, p3, p4, ix1, ix2, ix3, ix4, nsvg, gapv, newfront, ibag, icontact, stif, comntag, iadm)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)