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,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),
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,A4
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.AND..AND.
IF(STIF(I)/=ZEROPENE(I)>ZEROVN(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)
345 XLL(IAD+9) = NY(I)*H4(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(LL) + 1
382 COMNTAG(LL) = COMNTAG(LL) + 1
384 COMNTAG(LL) = COMNTAG(LL) + 1
386 COMNTAG(LL) = COMNTAG(LL) + 1
389#include "lockoff.inc"
392.OR.
IF(IBAG/=0IADM/=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)