31 2 STFS ,STFM ,XANEW ,NSV ,IWPENE,
32 3 N1 ,N2 ,M1 ,M2 ,NX ,
33 4 NY ,NZ ,GAPV ,GAP_S ,GAP_M ,
35 USE format_mod ,
ONLY : fmw_4i, fmw_i_3f, fmw_5i
39#include "implicit_f.inc"
47 INTEGER ITAB(*),CAND_M(*),CAND_S(*),INACTI,IGAP ,
48 4 N1(*) ,N2(*) ,M1(*) ,M2(*)
51 my_real stfs(*),stfm(*),xanew(3,*),x(3,*),gap_s(*) ,gap_m(*),
52 . nx(mvsiz), ny(mvsiz), nz(mvsiz),gapv(*)
57#include "vect07_c.inc"
66 . peneold, s2, d, pplus,ps2, penmax
71 s2 = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
72 gapv(i) = sqrt(gapv(i))
73 pene(i) = gapv(i) - s2
82 WRITE(iout,fmt=fmw_4i)
83 2 itab(n1(i)),itab(n2(i)),itab(m1(i)),itab(m2(i))
86 WRITE(iout,1000)pene(i)
87 WRITE(iout,fmt=fmw_i_3f)itab(n1(i)),
88 . xanew(1,n1(i))+pene(i)*nx(i),
89 . xanew(2,n1(i))+pene(i)*ny(i),
90 . xanew(3,n1(i))+pene(i)*nz(i)
91 WRITE(iout,fmt=fmw_i_3f)itab(n2(i)),
92 . xanew(1,n2(i))+pene(i)*nx(i),
93 . xanew(2,n2(i))+pene(i)*ny(i),
94 . xanew(3,n2(i))+pene(i)*nz(i)
95 pene(i) = pene(i) + em8*pene(i)
96 penmax = fpenmax*gapv(i)
97 IF (inacti == 1 .OR. pene(i) > penmax)
THEN
100 .
WRITE(iout,
'(A,1PG20.13,A)')
101 .
' MAX INITIAL PENETRATION ',penmax,
' IS REACHED'
102 WRITE(iout,
'(A)')
' SECONDARY STIFFNESS IS SET TO ZERO'
103 stfs(cand_s(i)) = zero
104 ELSE IF(inacti==2)
THEN
106 WRITE(iout,
'(A)')
'MAIN STIFFNESS IS SET TO ZERO'
107 stfm(cand_m(i)) = zero
108 ELSE IF(inacti==6)
THEN
111 WRITE(iout,
'(A)')
'NODE COORD IS CHANGED AS PROPOSED'
113 peneold = sqrt( (xanew(1,n1(i))-x(1,n1(i)))**2 +
114 . (xanew(2,n1(i))-x(2,n1(i)))**2 +
115 . (xanew(3,n1(i))-x(3,n1(i)))**2 )
117 xanew(1,n1(i)) = x(1,n1(i))+ps2*nx(i)
118 xanew(2,n1(i)) = x(2,n1(i))+ps2*ny(i)
119 xanew(3,n1(i)) = x(3,n1(i))+ps2*nz(i)
121 peneold = sqrt( (xanew(1,n2(i))-x(1,n2(i)))**2 +
122 . (xanew(2,n2(i))-x(2,n2(i)))**2 +
123 . (xanew(3,n2(i))-x(3,n2(i)))**2 )
125 xanew(1,n2(i)) = x(1,n2(i))+ps2*nx(i)
126 xanew(2,n2(i)) = x(2,n2(i))+ps2*ny(i)
127 xanew(3,n2(i)) = x(3,n2(i))+ps2*nz(i)
130 WRITE(iout,
'(A)')
'SEG. COORD IS CHANGED AS PROPOSED'
131 peneold = sqrt( (xanew(1,m1(i))-x(1,m1(i)))**2 +
132 . (xanew(2,m1(i))-x(2,m1(i)))**2 +
133 . (xanew(3,m1(i))-x(3,m1(i)))**2 )
135 xanew(1,m1(i)) = x(1,m1(i))-ps2*nx(i)
136 xanew(2,m1(i)) = x(2,m1(i))-ps2*ny(i)
137 xanew(3,m1(i)) = x(3,m1(i))-ps2*nz(i)
140 peneold = sqrt( (xanew(1,m2(i))-x(1,m2(i)))**2 +
141 . (xanew(2,m2(i))-x(2,m2(i)))**2 +
142 . (xanew(3,m2(i))-x(3,m2(i)))**2 )
144 xanew(1,m2(i)) = x(1,m2(i))-ps2*nx(i)
145 xanew(2,m2(i)) = x(2,m2(i))-ps2*ny(i)
146 xanew(3,m2(i)) = x(3,m2(i))-ps2*nz(i)
154 1000
FORMAT(2x,
'** INITIAL PENETRATION =',1pg20.13,
155 .
' POSSIBLE NEW COORDINATES OF SECONDARY NODES')
168 SUBROUTINE i20pwr3a(ITAB,INACTI,CAND_E,CAND_N,STFN,
169 1 STF ,XANEW ,NSV ,IWPENE,IWRN ,
170 2 CAND_EN,CAND_NN,TAG,NOINT,GAPV ,NTY,
171 3 ITIED , FPENMAX,ID,TITR,
172 4 IX1,IX2,IX3,IX4,X1,
173 5 X2 ,X3 ,X4 ,Y1 ,Y2,
174 6 Y3 ,Y4 ,Z1 ,Z2 ,Z3,
175 7 Z4 ,XI ,YI ,ZI ,N1,
179 USE format_mod ,
ONLY : fmw_5i, fmw_i_3f
183#include "implicit_f.inc"
187#include "mvsiz_p.inc"
191 INTEGER ITAB(*),CAND_E(*),CAND_N(*),CAND_EN(*),CAND_NN(*)
192 INTEGER NSV(*),TAG(*),IWPENE,INACTI,NOINT,NTY,ITIED,IWRN
194 my_real STF(*),STFN(*),XANEW(3,*),GAPV(*)
196 CHARACTER(LEN=NCHARTITLE) :: TITR
200#include
"units_c.inc"
201#include
"vect07_c.inc"
202#include
"scr03_c.inc"
206 INTEGER,
DIMENSION(MVSIZ),
INTENT(IN) :: IX1,IX2,IX3,IX4,NSVG
207 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x1,x2,x3,x4
208 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: y1,y2,y3,y4
209 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: z1,z2,z3,z4
210 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: n1,n2,n3,pene
211 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: xi,yi,zi
217 my_real ::PENEOLD,PPLUS,PS2,PENMAX
222 IF(ipri>=1.AND.pene(i)>zero)
THEN
223 WRITE(iout,fmt=fmw_5i)
225 2 itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
227 WRITE(iout,fmt=fmw_5i)
229 2 itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
231 penmax = fpenmax*gapv(i)
234 tag(nsvg(i))=tag(nsvg(i))+1
235 dn=n1(i)*n1(i)+n2(i)*n2(i)+n3(i)*n3(i)
237 WRITE(iout,1100)pene(i),itab(nsvg(i))
238 IF(nty/=10.OR.itied==0)
THEN
239 IF (inacti/=1.AND.inacti/=2.AND.
240 . pene(i)<=penmax)
THEN
245 . anmode=aninfo_blind_1,
253 . anmode=aninfo_blind_1,
261 ELSEIF (pene(i) <= penmax)
THEN
262 WRITE(iout,1000)pene(i)
263 pene(i) = pene(i) + em8*pene(i)
264 WRITE(iout,fmt=fmw_i_3f)itab(nsvg(i)),
265 . xi(i)+pene(i)*n1(i),
266 . yi(i)+pene(i)*n2(i),
267 . zi(i)+pene(i)*n3(i)
270 IF (inacti == 1 .OR. pene(i) > penmax)
THEN
272 IF (pene(i) > penmax)
273 .
WRITE(iout,
'(A,I8,A,1PG20.13,A)')
' NODE ',itab(nsvg(i)),
274 .
' : MAX INITIAL PENETRATION ',penmax,
' IS REACHED'
275 WRITE(iout,
'(A)')
' SECONDARY STIFFNESS IS SET TO ZERO'
276 stfn(cand_n(i)) = zero
277 ELSE IF(inacti==2)
THEN
279 WRITE(iout,
'(A)')
'ELEMENT STIFFNESS IS SET TO ZERO'
280 stf(cand_e(i)) = zero
281 ELSE IF(inacti==3)
THEN
283 WRITE(iout,
'(A)')
'NODE COORD IS CHANGED AS PROPOSED'
284 peneold = sqrt( (xanew(1,nsv(cand_n(i)))-xi(i))**2 +
285 . (xanew(2,nsv(cand_n(i)))-yi(i))**2 +
286 . (xanew(3,nsv(cand_n(i)))-zi(i))**2 )
287 IF(pene(i)>peneold)
THEN
288 xanew(1,nsv(cand_n(i))) = xi(i)+pene(i)*n1(i)
289 xanew(2,nsv(cand_n(i))) = yi(i)+pene(i)*n2(i)
290 xanew(3,nsv(cand_n(i))) = zi(i)+pene(i)*n3(i)
292 ELSE IF(inacti==4)
THEN
294 WRITE(iout,
'(A)')
'SEG. COORD IS CHANGED AS PROPOSED'
295 peneold = sqrt( (xanew(1,ix1(i))-x1(i))**2 +
296 . (xanew(2,ix1(i))-y1(i))**2 +
297 . (xanew(3,ix1(i))-z1(i))**2 )
298 IF(pene(i)>peneold)
THEN
299 xanew(1,ix1(i)) = x1(i)-pene(i)*n1(i)
300 xanew(2,ix1(i)) = y1(i)-pene(i)*n2(i)
301 xanew(3,ix1(i)) = z1(i)-pene(i)*n3(i)
304 peneold = sqrt( (xanew(1,ix2(i))-x2(i))**2 +
305 . (xanew(2,ix2(i))-y2(i))**2 +
306 . (xanew(3,ix2(i))-z2(i))**2 )
307 IF(pene(i)>peneold)
THEN
308 xanew(1,ix2(i)) = x2(i)-pene(i)*n1(i)
309 xanew(2,ix2(i)) = y2(i)-pene(i)*n2(i)
310 xanew(3,ix2(i)) = z2(i)-pene(i)*n3(i)
313 peneold = sqrt( (xanew(1,ix3(i))-x3(i))**2 +
314 . (xanew(2,ix3(i))-y3(i))**2 +
315 . (xanew(3,ix3(i))-z3(i))**2 )
317 xanew(1,ix3(i)) = x3(i)-pene(i)*n1(i)
318 xanew(2,ix3(i)) = y3(i)-pene(i)*n2(i)
319 xanew(3,ix3(i)) = z3(i)-pene(i)*n3(i)
322 peneold = sqrt( (xanew(1,ix4(i))-x4(i))**2 +
323 . (xanew(2,ix4(i))-y4(i))**2 +
324 . (xanew(3,ix4(i))-z4(i))**2 )
325 IF(pene(i)>peneold)
THEN
326 xanew(1,ix4(i)) = x4(i)-pene(i)*n1(i)
327 xanew(2,ix4(i)) = y4(i)-pene(i)*n2(i)
328 xanew(3,ix4(i)) = z4(i)-pene(i)*n3
330 ELSE IF(inacti == 6)
THEN
333 WRITE(iout,
'(A)')
'NODE COORD IS CHANGED AS PROPOSED'
335 peneold = sqrt( (xanew(1,nsv(cand_n(i)))-xi(i))**2 +
336 . (xanew(2,nsv(cand_n(i)))-yi(i))**2 +
337 . (xanew(3,nsv(cand_n(i)))-zi(i))**2 )
339 xanew(1,nsv(cand_n(i))) = xi(i)+ps2*n1(i)
340 xanew(2,nsv(cand_n(i))) = yi(i)+ps2*n2(i)
341 xanew(3,nsv(cand_n(i))) = zi(i)+ps2*n3(i)
344 WRITE(iout,
'(A)')
'SEG. COORD IS CHANGED AS PROPOSED'
345 peneold = sqrt( (xanew(1,ix1(i))-x1(i))**2 +
346 . (xanew(2,ix1(i))-y1(i))**2 +
347 . (xanew(3,ix1(i))-z1(i))**2 )
349 xanew(1,ix1(i)) = x1(i)-ps2*n1(i)
350 xanew(2,ix1(i)) = y1(i)-ps2*n2(i)
351 xanew(3,ix1(i)) = z1(i)-ps2*n3(i)
354 peneold = sqrt( (xanew(1,ix2(i))-x2(i))**2 +
355 . (xanew(2,ix2(i))-y2(i))**2 +
356 . (xanew(3,ix2(i))-z2(i))**2 )
358 xanew(1,ix2(i)) = x2(i)-ps2*n1(i)
359 xanew(2,ix2(i)) = y2(i)-ps2*n2(i)
360 xanew(3,ix2(i)) = z2(i)-ps2*n3(i)
363 peneold = sqrt( (xanew(1,ix3(i))-x3(i))**2 +
364 . (xanew(2,ix3(i))-y3(i))**2 +
365 . (xanew(3,ix3(i))-z3(i))**2 )
367 xanew(1,ix3(i)) = x3(i)-ps2*n1(i)
368 xanew(2,ix3(i)) = y3(i)-ps2*n2(i)
369 xanew(3,ix3(i)) = z3(i)-ps2*n3(i)
372 peneold = sqrt( (xanew(1,ix4(i))-x4(i))**2 +
373 . (xanew(2,ix4(i))-y4(i))**2 +
374 . (xanew(3,ix4(i))-z4(i))**2 )
376 xanew(1,ix4(i)) = x4(i)-ps2*n1(i)
377 xanew(2,ix4(i)) = y4(i)-ps2*n2(i)
378 xanew(3,ix4(i)) = z4(i)-ps2*n3(i)
386 IF(iwpene /= 0 .and.inacti == 3 .or.inacti == 4) iwrn = 1
388 1000
FORMAT(2x,
'** INITIAL PENETRATION =',1pg20.13,
389 .
' POSSIBLE NEW COORDINATES OF SECONDARY NODE')
390 1100
FORMAT(2x,
'** INITIAL PENETRATION =',e14.7,
391 .
' IMPOSSIBLE TO CALCULATE NEW COORDINATES OF SECONDARY NODE',i8)
404 SUBROUTINE i20pwr3(ITAB,INACTI,CAND_E,CAND_N,STFN ,
405 1 STF ,X ,NSV ,IWPENE,IWRN ,
406 2 CAND_EN,CAND_NN,TAG,NOINT,GAPV ,
407 3 NTY ,ITIED ,PENIS ,PENIM ,GAP_S,
408 4 IGAP,ID ,TITR,IX1,IX2,
409 5 IX3 ,IX4,N1 ,N2 ,N3 ,
416 USE format_mod ,
ONLY : fmw_5i, fmw_4i, fmw_i_3f
420#include "implicit_f.inc"
424#include "mvsiz_p.inc"
428#include "units_c.inc"
429#include "vect07_c.inc"
430#include "scr03_c.inc"
434 INTEGER ITAB(*),CAND_E(*),CAND_N(*),CAND_EN(*),CAND_NN(*)
435 INTEGER NSV(*),TAG(*),IWPENE,INACTI,NOINT,NTY,ITIED,IWRN,IGAP
436 my_real STF(*),STFN(*),X(3,*),GAPV(*),PENIS(2,*) ,PENIM(2,*),GAP_S(*)
438 CHARACTER(LEN=NCHARTITLE) :: TITR
439 INTEGER,
DIMENSION(MVSIZ),
INTENT(IN) :: IX1,IX2,IX3,IX4,NSVG
440 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: N1,N2,N3,PENE
444 INTEGER I,IS,IM,JWARN
445 my_real PENEOLD,PPLUS,AAA
452 IF(stfn(is)==zero) cycle
454 IF(ipri>=1.AND.pene(i)>zero)
THEN
455 WRITE(iout,fmt=fmw_5i)
457 2 itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
459 WRITE(iout,fmt=fmw_5i)
461 2 itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
464 tag(nsvg(i))=tag(nsvg(i))+1
465 dn=n1(i)*n1(i)+n2(i)*n2(i)+n3(i)*n3(i)
467 WRITE(iout,1100)pene(i),itab(nsvg(i))
468 IF(nty/=10.OR.itied==0)
THEN
469 IF(inacti/=1.AND.inacti/=2)
THEN
474 . anmode=aninfo_blind_1,
482 . anmode=aninfo_blind_1,
492 pene(i) = pene(i) + em8*pene(i)
495 IF(inacti == 5.or.inacti == 6)
THEN
497 IF(pene(i) >= gapv(i)*zep995)
THEN
498 WRITE(iout,
'(A)')
' *** PENETRATION > GAP - 0.5% !! '
499 WRITE(iout,
'(A)')
'SECONDARY STIFFNESS IS SET TO ZERO'
504 pplus=(pene(i)+zep05*(gapv(i)-pene(i)))
507 IF (pplus < gap_s(is))
THEN
508 penis(2,is)=
max(penis(2,is),pplus)
510 penis(2,is)=
max(penis(2,is),gap_s(is))
511 penim(2,im)=
max(penim(2,im),pplus-gap_s(is))
514 penim(2,im)=
max(penim(2,im),pplus)
521 penis(1,is)=penis(2,is)
522 penim(1,im)=penim(2,im)
526 cand_nn(iwpene+1) = cand_n(i)
527 cand_en(iwpene+1) = cand_e(i)
534 IF(iwpene /= 0.and.inacti == 3.or.inacti == 4) iwrn = 1
536 1100
FORMAT(2x,
'** INITIAL PENETRATION =',e14.7,
537 .
' IMPOSSIBLE TO CALCULATE NEW COORDINATES OF SECONDARY NODE',i8)
548 2 STFS ,STFM ,X ,NSV ,IWPENE,
549 3 N1 ,N2 ,M1 ,M2 ,NX ,
550 4 NY ,NZ ,GAPV ,GAP_S ,GAP_M ,
551 5 PENIS ,PENIM ,IGAP )
552 USE format_mod ,
ONLY : fmw_4i, fmw_i_3f
556#include "implicit_f.inc"
560#include "mvsiz_p.inc"
564 INTEGER ITAB(*),CAND_M(*),CAND_S(*),INACTI,IGAP ,N1(*) ,N2(*) ,M1(*) ,M2(*)
565 INTEGER NSV(*),IWPENE
566 my_real STFS(*),STFM(*),X(3,*),GAP_S(*) ,GAP_M(*),PENIS(2,*) , PENIM(2,*),NX(MVSIZ), NY(MVSIZ), NZ(MVSIZ),GAPV(*)
570#include "units_c.inc"
571#include "vect07_c.inc"
572#include "scr03_c.inc"
576 INTEGER I, IS, IM,JWARN
580 . PENEOLD, S2, D, PPLUS
585 s2 = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
586 gapv(i) = sqrt(gapv(i))
587 pene(i) = gapv(i) - s2
595 IF(stfs(cand_s(i))==zero) cycle
597 WRITE(iout,fmt=fmw_4i)
598 2 itab(n1(i)),itab(n2(i)),itab(m1(i)),itab(m2(i))
601 WRITE(iout,1000)pene(i)
602 WRITE(iout,fmt=fmw_i_3f)itab(n1(i)),
603 . x(1,n1(i))+pene(i)*nx(i),
604 . x(2,n1(i))+pene(i)*ny(i),
605 . x(3,n1(i))+pene(i)*nz(i)
606 WRITE(iout,fmt=fmw_i_3f)itab(n2(i)),
607 . x(1,n2(i))+pene(i)*nx(i),
608 . x(2,n2(i))+pene(i)*ny(i),
609 . x(3,n2(i))+pene(i)*nz(i)
610 pene(i) = pene(i) + em8*pene(i)
611 IF(inacti == 5.or.inacti == 6)
THEN
613 IF(pene(i)>=gapv(i)*zep995)
THEN
614 WRITE(iout,
'(A)')
' *** PENETRATION > GAP - 0.5% !! '
615 WRITE(iout,
'(A)')
'SECONDARY STIFFNESS IS SET TO ZERO'
617 stfs(cand_s(i)) = zero
622 pplus=half*(pene(i)+zep05*(gapv(i)-pene(i)))
623 penis(2,is)=
max(penis(2,is),pplus)
624 penim(2,im)=
max(penim(2,im),pplus)
625 penis(1,is)=penis(2,is)
626 penim(1,im)=penim(2,im)
632 IF (jwarn /= 0)
WRITE(iout,
'(A)')
'REDUCE INITIAL GAP'
634 1000
FORMAT(2x,
'** INITIAL PENETRATION =',1pg20.13,
635 .
' POSSIBLE NEW COORDINATES OF SECONDARY NODES')
subroutine i20pwr3(itab, inacti, cand_e, cand_n, stfn, stf, x, nsv, iwpene, iwrn, cand_en, cand_nn, tag, noint, gapv, nty, itied, penis, penim, gap_s, igap, id, titr, ix1, ix2, ix3, ix4, n1, n2, n3, pene, nsvg)
subroutine i20pwr3a(itab, inacti, cand_e, cand_n, stfn, stf, xanew, nsv, iwpene, iwrn, cand_en, cand_nn, tag, noint, gapv, nty, itied, fpenmax, id, titr, ix1, ix2, ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, n1, n2, n3, pene, nsvg)
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)