78
79
80
81 USE python_funct_mod
82 USE redef3_mod
84 USE redef_seatbelt_mod
85 USE sensor_mod
86
87
88
89#include "implicit_f.inc"
90#include "comlock.inc"
91
92
93
94#include "mvsiz_p.inc"
95
96
97
98#include "param_c.inc"
99#include "com04_c.inc"
100#include "com08_c.inc"
101#include "scr14_c.inc"
102#include "scr17_c.inc"
103#include "units_c.inc"
104#include "com01_c.inc"
105#include "impl1_c.inc"
106
107
108
109 TYPE(python_) :: PYTHON
110 INTEGER, INTENT(IN) :: STF
111 INTEGER, INTENT(IN) :: SANIN
112 INTEGER, INTENT(IN) :: IRESP
113 INTEGER, INTENT(IN) :: SNPC
114 INTEGER, INTENT(IN) :: NFT,NSENSOR
115 INTEGER NPF(*),IGEO(NPROPGI,*),NEL,NGL(*),PID(*),MID(*),NUVAR,
116 . IPM(NPROPMI,*),NC1(*),NC2(*),NC3(*),ADD_NODE1(*),ADD_NODE2(*),
117 . SLIPRING_ID(*),UPDATE_FLAG(*),RETRACTOR_ID(*),SLIPRING_STRAND(*),
118 . FLAG_SLIPRING_UPDATE,FLAG_RETRACTOR_UPDATE,FR_ID(*)
119
121 . skew(lskew,*), geo(npropg,*), fx(*), fy(*), fz(*), e(*), dx(*),
122 . dy(*), dz(*), tf(stf), off(*), dpx(*), dpy(*), dpz(*), fxep(*),
123 . fyep(*), fzep(*), x0(*), y0(*), z0(*), xmom(*), ymom(*),
124 . zmom(*), rx(*), ry(*), rz(*), rpx(*), rpy(*), rpz(*), xmep(*),
125 . ymep(*), zmep(*), dpx2(*), dpy2(*), dpz2(*),rpx2(*), rpy2(*),
126 . rpz2(*),anim(sanin),posx(*),posy(*),posz(*),posxx(*),
127 . posyy(*),poszz(*),fr_wave(*),e6(nel,6),
128 . exx2(mvsiz), eyx2(mvsiz), ezx2(mvsiz),
129 . exy2(mvsiz), eyy2(mvsiz), ezy2(mvsiz),
130 . exz2(mvsiz), eyz2(mvsiz), ezz2(mvsiz),
131 . crit_new(*), x0_err(mvsiz),yieldx(*),yieldy(*),
132 . yieldz(*),yieldx2(*),yieldy2(*),yieldz2(*),
133 . exx(mvsiz), eyx(mvsiz), ezx(mvsiz), exy(mvsiz),
134 . eyy(mvsiz), ezy(mvsiz), exz(mvsiz), eyz(mvsiz
135 . ezz(mvsiz), xcr(mvsiz), rx1(mvsiz), rx2(mvsiz),
136 . ry1(mvsiz), ry2(mvsiz), rz1(mvsiz), rz2(mvsiz),
137 . xin(mvsiz),ak(mvsiz),xm(mvsiz),xkm(mvsiz),xcm(mvsiz),
138 . xkr(mvsiz),vx1(mvsiz),vx2(mvsiz),vy1(mvsiz),vy2(mvsiz),
139 . vz1(mvsiz),vz2(mvsiz),uvar(nuvar,*),uparam(*),mass(*),
140 . dx0(*),dy0(*),dz0(*),rx0(*),ry0(*),rz0(*),lmin(*),dfs(*),
141 . ring_slip(*),x02(*),vx3(mvsiz),vy3(mvsiz),vz3(mvsiz),
142 . uiner(*),fram_factor(*)
143 my_real ,
INTENT(INOUT) :: eps_old(mvsiz),fx_b2(mvsiz),dpx_b2(mvsiz),yieldx_b2(mvsiz),
144 . xx_old_b2(mvsiz),fxep_b2(mvsiz),posx_b2(mvsiz),eps_old_b2(mvsiz)
145 TARGET :: uvar
146 DOUBLE PRECISION ALDP(MVSIZ),AL2DP(MVSIZ),X1DP(3,*),X2DP(3,*),X3DP(3,*)
147 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) :: SENSOR_TAB
148
149
150
151 INTEGER INDX(MVSIZ),
152 . IECROU(MVSIZ), IFUNC(MVSIZ), IFV(MVSIZ), IFUNC2(MVSIZ),
153 . I,K,ILENG, J, KK, IFAIL(MVSIZ),IFAIL2(MVSIZ),ADHER(MVSIZ),
154 . NINDX,ISRATE, IFUNC3(MVSIZ),I1,I2,I3,I4,I5,I6,I7,I8,
155 . I9,I10,I11,I12,I13,I14,IF1,IF2,IF3,IF4,IADBUF,NUPAR,NN1,,RET,
156 . FLAG_RETRACTOR_UPDATE_OLD,FLAG,INDEX1(MVSIZ),INDEX2(MVSIZ),COMPT,
157 . DIR,STRD,II,INDEX_SLIP(MVSIZ),COMPT2
158
160 . xk(mvsiz), yk(mvsiz),
161 . zk(mvsiz),xc(mvsiz), yc(mvsiz), zc(mvsiz),xh(mvsiz),
162 . xhr(mvsiz),dxold(mvsiz), dyold(mvsiz), dzold(mvsiz),
163 . b(mvsiz), d(mvsiz), epla(mvsiz),
164 . dv(mvsiz),vrt(mvsiz),vrr(mvsiz),
165 . dmn(mvsiz),dmx(mvsiz),xl0(mvsiz),crit(mvsiz),
166 . xn(mvsiz),ff(mvsiz),lscale(mvsiz),ee(mvsiz),gf3(mvsiz),
167 . hx(mvsiz), hy(mvsiz), hz(mvsiz),fx_max(mvsiz),e_offset(mvsiz),
168 . xk_comp(mvsiz),mx_max(mvsiz),dfs_old(mvsiz),not_used,xl02(mvsiz),
169 . xkp(mvsiz),dfx(mvsiz)
171 . at,dt05,xka,yka,zka,cc,cn,xa,xb,dlim,vfail,
172 . x21, y21, z21, epxy, epxz,
173 . vx21, vy21, vz21, ryavp, rzavp,eyzp,exzp,
174 . ryav, rzav,den, c, cp, exyp,
175 . x21phi, y21phi, z21phi, vx21phi, vy21phi, vz21phi,
176 . ryav1, rzav1, ryav1p, rzav1p,asrate,
norm,gap,lmin_b2(mvsiz),
177 . eb(mvsiz),dxoldb(mvsiz),xkp_b2(mvsiz),dx_b2(mvsiz),a1
178 DOUBLE PRECISION X0DP(MVSIZ),X0DP_B2(MVSIZ),EX2DP(MVSIZ),EY2DP(MVSIZ),EZ2DP(MVSIZ),
179 . ALDP_B2(MVSIZ)
180 my_real ,
DIMENSION(:),
POINTER :: coord_old
181
182
183 not_used = zero
184
185
186
187
188
189
190
191
192 nupar = 4
193 i1 = nupar
194 i2 = i1 + 6
195 i3 = i2 + 6
196 i4 = i3 + 6
197 i5 = i4 + 6
198 i6 = i5 + 6
199 i7 = i6 + 6
200 i8 = i7 + 6
201 i9 = i8 + 6
202 i10 = i9 + 6
203 i11 = i10 + 6
204 i12 = i11 + 6
205 i13 = i12 + 6
206 i14 = i13 + 6
207 nupar = nupar + 84
208 DO i=1,nel
209
210 index1(i) = i
211 iadbuf= ipm(7,mid(i)) - 1
212 epla(i)=zero
213 dfx(i)=zero
214 xm(i)=mass(i)
215
216 xk(i)=uparam(iadbuf + i11 + 1)
217 yk(i)=uparam(iadbuf + i11 + 2)
218 zk(i)=uparam(iadbuf + i11 + 3)
219
220 xc(i)=uparam(iadbuf + i12 + 1) * fram_factor(i)
221 yc(i)=uparam(iadbuf + i12 + 2) * fram_factor(i)
222 zc(i)=uparam(iadbuf + i12 + 3) * fram_factor(i)
223
224 xk_comp(i) = uparam(iadbuf + 117)*geo(1,pid(i))
225
226 xka=xk(i)*uparam(iadbuf + i1 + 1)*fram_factor(i)
227 yka=yk(i)*uparam(iadbuf + i1 + 2)*fram_factor(i)
228 zka=zk(i)*uparam(iadbuf + i1 + 3)*fram_factor(i)
229 xkm(i)=
max(xka,yka,zka,xk_comp(i))
230
231 hx(i) = uparam(iadbuf + i14 + 1)
232 hy(i) = uparam(iadbuf + i14 + 2)
233 hz(i) = uparam(iadbuf + i14 + 3)
234
235 xh(i)=
max(hx(i),hy(i),hz(i))
236 xcm(i)=
max(xc(i),yc(i),zc(i))
237 xcm(i)= xcm(i)+xh(i)
238
239 xkr(i)=
max(yka,zka) * aldp(i) * aldp(i)
240 xcr(i)= (
max(yc(i),zc(i)) +
max(hy(i),hz(i))) * aldp(i) * aldp(i)
241 vrt(i) = uparam(iadbuf + nupar + 1)
242 vrr(i) = uparam(iadbuf + nupar + 2)
243 ifail(i) = nint(uparam(iadbuf + 1 ))
244 ifail2(i)= nint(uparam(iadbuf + 3 ))
245
246 e_offset(i) = uparam(iadbuf + 118)
247 IF (tt == zero) lmin(i) = uparam(iadbuf + 119)
248 fx_max(i) = uparam(iadbuf + 120)
249 mx_max(i) = uparam(iadbuf + 121)
250 ENDDO
251
252 IF (inispri /= 0 .and. tt == zero) THEN
253 DO i=1,nel
254 xl0(i)= x0(i)
255
256 IF (xl0(i) == zero) xl0(i) = aldp(i)
257 ENDDO
258 ENDIF
259
260 IF (tt == zero) THEN
261 DO i=1,nel
262 x0(i)= aldp(i)
263 ENDDO
264 ENDIF
265
266 IF (scodver >= 101) THEN
267 IF (tt == zero) THEN
268 DO i=1,nel
269 x0_err(i)= aldp(i)-x0(i)
270 ENDDO
271 ENDIF
272 ENDIF
273
274 IF ( inispri /= 0 .and. tt == zero) THEN
275 DO i=1,nel
276 x0(i)= xl0(i)
277 ENDDO
278 ENDIF
279
280 DO i=1,nel
281 x0dp(i)= x0(i)
282 ENDDO
283
284 IF (scodver >= 101) THEN
285 DO i=1,nel
286 x0dp(i)= x0(i) + x0_err(i)
287 ENDDO
288 ENDIF
289
290
291
292 DO i=1,nel
293 dxold(i)=dx(i)
294 dyold(i)=dy(i)
295 dzold(i)=dz(i)
296 ENDDO
297
298 IF (inispri /= 0 .and. tt == zero) THEN
299 DO i=1,nel
300 dxold(i)=dx0(i)
301 dyold(i)=dy0(i)
302 dzold(i)=dz0(i)
303 ENDDO
304 ENDIF
305
306 dt05=half*dt1
307 IF (ismdisp > 0) THEN
308 DO i=1,nel
309 vx21 = vx2(i)-vx1(i)
310 vy21 = vy2(i)-vy1(i)
311 vz21 = vz2(i)-vz1(i)
312 dx(i) = dxold(i)+(vx21*exx(i)+vy21*eyx(i)+vz21*ezx(i))*dt1
313 dy(i) = dyold(i)+(vx21*exy(i)+vy21*eyy(i)+vz21*ezy(i))*dt1
314 dz(i) = dzold(i)+(vx21*exz(i)+vy21*eyz(i)+vz21*ezz(i))*dt1
315
316 x21 = (rx2(i)+rx1(i))
317 y21 = (ry2(i)+ry1(i))
318 z21 = (rz2(i)+rz1(i))
319
320 ryav1 = (x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i))
321 rzav1 = (x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i))
322
323 ryav = dt05 * ryav1
324 rzav = dt05 * rzav1
325
326 dy(i) = dy(i) - rzav * al2dp(i)
327 dz(i) = dz(i) + ryav * al2dp(i)
328
329 crit(i) = zero
330 ENDDO
331 ELSE
332 DO i=1,nel
333 vx21 = vx2(i)-vx1(i)
334 vy21 = vy2(i)-vy1(i)
335 vz21 = vz2(i)-vz1(i)
336
337 epxy = (vx21*exy2(i)+vy21*eyy2(i)+vz21*ezy2(i))*dt05
338 epxz = (vx21*exz2(i)+vy21*eyz2(i)+vz21*ezz2(i))*dt05
339
340 x21 = (rx2(i)+rx1(i))
341 y21 = (ry2(i)+ry1(i))
342 z21 = (rz2(i)+rz1(i))
343
344 ryav1 = (x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i))
345 rzav1 = (x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i))
346
347 at=epxz/
max(al2dp(i),em30)
348 at=atan(at)
349 ryav = dt05 * (ryav1) + two * at
350 at=epxy/
max(al2dp(i),em30)
351 at=atan(at)
352 rzav = dt05 * (rzav1) - two * at
353
354 dx(i) = aldp(i) - x0dp(i)
355 dy(i) = dyold(i) - rzav * al2dp(i)
356 dz(i) = dzold(i) + ryav * al2dp(i)
357
358 crit(i) = zero
359 ENDDO
360 ENDIF
361
362 DO i=1,nel
363 iadbuf = ipm(7,mid(i)) - 1
364 ileng = nint(uparam(iadbuf + 2))
365 IF (ileng /= 0) THEN
366 xl0(i)=
max(x0dp(i),lmin(i))
367 ELSE
368 xl0(i)=one
369 ENDIF
370 ENDDO
371
372 nindx = 0
373 if1 = 0
374 if2 = 6
375 if3 = 12
376 if4 = 18
377 compt = 0
378
379 DO i=1,nel
380 iadbuf = ipm(7,mid(i)) - 1
381 ifunc(i) = ipm(10 + if1 + 1,mid(i))
382 ifv(i) = ipm(10 + if2 + 1,mid(i))
383
384 IF (yieldx(i) > uparam(iadbuf + 125)) THEN
385 ifunc2(i)= ipm(10 + if3 + 1,mid(i))
386 ELSE
387 ifunc2(i)= ifunc(i)
388 ENDIF
389 ifunc3(i)= ipm(10 + if4 + 1,mid(i))
390 iecrou(i)= nint(uparam(iadbuf + i13 + 1))
391
392
393 ak(i) = uparam(iadbuf + i1 + 1) * fram_factor(i)
394 b(i) = uparam(iadbuf + i2 + 1)
395 d(i) = uparam(iadbuf + i3 + 1)
396 ee(i) = uparam(iadbuf + i4 + 1)
397 gf3(i) = uparam(iadbuf + i5 + 1)
398 ff(i) = uparam(iadbuf + i6 + 1)
399 lscale(i)= uparam(iadbuf + i7 + 1)
400 dmn(i) = uparam(iadbuf + i8 + 1)
401 dmx(i) = uparam(iadbuf + i9 + 1)
402
403 IF (update_flag(i) /= 0) THEN
404 compt = compt + 1
405 index2(compt) = i
406 ENDIF
407 ENDDO
408
409 IF (nslipring + nretractor > 0) THEN
410
411 IF (compt > 0) THEN
412
413
414
415
416
417 DO ii=1,compt
418 i = index2(ii)
419
420 IF (slipring_id(i) > 0) THEN
421
422 j = slipring_id(i)
423 k = fr_id(i)
424 IF (slipring_strand(i) == 1) THEN
425 lmin(i) = uparam(iadbuf + 119)
426 xl0(i)=
max(x0dp(i),lmin(i))
427
428 x02(i) =
slipring(j)%FRAM(k)%RESIDUAL_LENGTH(2)
429 fx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(1)
430 dpx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(2)
431 yieldx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(3)
432 xx_old_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(4)
433 fxep_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(5)
434 posx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(6)
435 eps_old_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR2(7)
436 IF (update_flag(i) <= 0) ring_slip(i) = x0(i)
437 ELSEIF (slipring_strand(i) == 2) THEN
438 lmin(i) = uparam(iadbuf + 119)
439 xl0(i)=
max(x0dp(i),lmin(i))
440
441 x02(i) =
slipring(j)%FRAM(k)%RESIDUAL_LENGTH(1)
442 fx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(1)
443 dpx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(2)
444 yieldx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(3)
445 xx_old_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(4)
446 fxep_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(5)
447 posx_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(6)
448 eps_old_b2(i) =
slipring(j)%FRAM(k)%INTVAR_STR1(7)
449 ENDIF
450
451 ELSEIF ((retractor_id(i) > 0).AND.(update_flag(i) == -1)) THEN
452
453 off(i) = one
454
455 ELSEIF ((retractor_id(i) > 0).AND.(update_flag(i) == -2)) THEN
456
457 off(i) = zero
458 update_flag(i) = 0
459 x0(i) = zero
460
461 ENDIF
462
463 ENDDO
464
465 ENDIF
466
467 compt = 0
468 compt2 = 0
469 DO i=1,nel
470 adher(i) = 0
471 IF (slipring_strand(i) > 0) THEN
472 compt = compt + 1
473 compt2 = compt2 + 1
474 index2(compt) = i
475 index_slip(compt2) = i
476 IF (
slipring(slipring_id(i))%NFRAM > 1)
THEN
477 yc(i) = 0.1*xc(i)
478 zc(i) = 0.1*xc(i)
479 yk(i) = 0.01*xk(i)
480 zk(i) = 0.01*xk(i)
481 ELSE
482 yc(i) = zero
483 zc(i) = zero
484 ENDIF
485
486 xc(i) = zero
487 xcm(i)=
max(xc(i),yc(i),zc(i))+xh(i)
488 xk_comp(i) = xk(i)
489 fx_max(i) = ep20
490 ELSEIF (slipring_strand(i) == -1) THEN
491
492 compt = compt + 1
493 index2(compt) = i
494 xc(i) = zero
495 yc(i) = zero
496 zc(i) = zero
497 xcm(i)=
max(xc(i),yc(i),zc(i))+xh(i)
498 xk_comp(i) = xk(i)
499 fx_max(i) = ep20
500 ENDIF
501 ENDDO
502
503 ENDIF
504
505 IF (nuvar >=1) coord_old => uvar(1,1:nel)
506
507 flag = 1
508 CALL redef_seatbelt(python,
509 1 fx, xk, dx, fxep,
510 2 dxold, dpx, tf, npf,
511 3 xc, off, e6(1,1), anim,
512 4 anim_fe(11),posx(1), xl0, dmn,
513 5 dmx, lscale, yieldx, ak,
514 6 iecrou, ifunc, ifunc2, coord_old,
515 7 fx_max, xk_comp, nel, index1,
516 8 flag, xkp, eps_old, fram_factor,
517 9 nft, snpc, stf, sanin,
518 a dt1, impl_s, idyna, nel)
519
520
521
522 IF (nslipring + nretractor > 0) THEN
523
524
525
526
527
528 DO j=1,compt2
529 i = index_slip(j)
530 strd = slipring_strand(i)
531 dir =
slipring(slipring_id(i))%FRAM(fr_id(i))%STRAND_DIRECTION(strd)
532
533 IF (((strd==1).AND.(dir ==1)).OR.((strd==2).AND.(dir==-1))) THEN
534 ex2dp(i)=x2dp(1,i)-x3dp(1,i)
535 ey2dp(i)=x2dp(2,i)-x3dp(2,i)
536 ez2dp(i)=x2dp(3,i)-x3dp(3,i)
537 ELSE
538 ex2dp(i)=x3dp(1,i)-x1dp(1,i)
539 ey2dp(i)=x3dp(2,i)-x1dp(2,i)
540 ez2dp(i)=x3dp(3,i)-x1dp(3,i)
541 ENDIF
542 norm=
max(em15,sqrt(ex2dp(i)*ex2dp(i)+ey2dp(i)*ey2dp(i)+ez2dp(i)*ez2dp(i)))
543 ex2dp(i)= ex2dp(i)/
norm
544 ey2dp(i)= ey2dp(i)/
norm
545 ez2dp(i)= ez2dp(i)/
norm
547 ENDDO
548
549 IF (tt == zero) THEN
550 DO j=1,compt2
551 i = index_slip(j)
552 x02(i)= aldp_b2(i)
553 ENDDO
554 ENDIF
555
556 DO j=1,compt2
557 i = index_slip(j)
558 x0dp_b2(i)= x02(i)
559 xl02(i)=
max(x0dp_b2(i),lmin(i))
560 dx_b2(i) = aldp_b2(i) - x0dp_b2(i)
561
562 IF (yieldx_b2(i) > uparam(iadbuf + 125)) THEN
563 ifunc2(i)= ipm(10 + if3 + 1,mid(i))
564 ELSE
565 ifunc2(i)= ifunc(i)
566 ENDIF
567 ENDDO
568
569
570 flag = 2
571 eb(1:mvsiz) = zero
572 dxoldb(1:mvsiz) = zero
573 CALL redef_seatbelt(python,
574 1 fx_b2, xk, dx_b2, fxep_b2,
575 2 dxoldb, dpx_b2, tf, npf,
576 3 xc, off, eb, anim,
577 4 anim_fe(11),posx_b2, xl02, dmn,
578 5 dmx, lscale, yieldx_b2, ak,
579 6 iecrou, ifunc, ifunc2, xx_old_b2,
580 7 fx_max, xk_comp, compt2, index_slip,
581 8 flag, xkp_b2, eps_old_b2, fram_factor,
582 9 nft, snpc, stf, sanin,
583 a dt1, impl_s, idyna, mvsiz)
584
585 DO j=1,compt2
586 i = index_slip(j)
587 IF (aldp(i) > aldp_b2(i)) xkp_b2(i) = xkp(i)
588 IF (aldp_b2(i) > aldp(i)) xkp(i) = xkp_b2(i)
589 ENDDO
590
591
593 1 off,x0,x02,lmin,update_flag,
594 2 ring_slip,slipring_id,xl0,dx,dxold,
595 3 exx,eyx,ezx,x1dp,x2dp,
596 4 x3dp,adher,nc1,nc2,nc3,
597 5 flag_slipring_update,add_node1,add_node2,vx1,vy1,
598 6 vz1,vx2,vy2,vz2,vx3,
599 7 vy3,vz3,xc,retractor_id,flag_retractor_update,
600 8 sensor_tab,x0dp,fr_id,dfx,fx,fx_b2,
601 9 aldp_b2,x0dp_b2,ex2dp,ey2dp,ez2dp,xl02,
602 a xkp_b2,compt,index2,nsensor)
603
604 DO i=1,nel
605 IF (slipring_strand(i) > 0) THEN
606 fx(i) = fx(i) + dfx(i)
607 e6(i,1) = e6(i,1) + (dx(i)-dxold(i))*dfx(i)*half
608 dx(i) = aldp(i)-x0dp(i)
609 xkm(i) =
max(xkm(i),fram_factor(i)*xk(i)*(one + xl0(i)/xl02(i)))
610 slipring(slipring_id(i))%FRAM(fr_id(i))%SLIP_FORCE(slipring_strand(i)) = fx(i)
611 ELSEIF (slipring_strand(i) < 0) THEN
612 fx(i) = fx(i) + dfx(i)
613 e6(i,1) = e6(i,1) + (dx(i)-dxold(i))*dfx(i)*half
614 dx(i) = aldp(i)-x0dp(i)
615 retractor(retractor_id(i))%RET_FORCE = fx(i)
616 ENDIF
617 END DO
618
619 ENDIF
620
621
622
623 DO i=1,nel
624 cc = uparam(iadbuf + nupar + 3)
625 cn = uparam(iadbuf + nupar + 9)
626 xa = uparam(iadbuf + nupar + 15)
627 xb = uparam(iadbuf + nupar + 21)
628 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i)/= zero) THEN
629 IF (ifail2(i) == 0) THEN
630 xa = one
631 xb = two
632 IF (dx(i) > zero) THEN
633 dlim = dx(i) / dmx(i)
634 ELSE
635 dlim = dx(i) / dmn(i)
636 ENDIF
637 ELSE
638 vfail = cc * (abs(dv(i)/vrt(i)))**cn
639 IF (ifail2(i) == 1) THEN
640 IF (dx(i) > zero) THEN
641 dlim = dx(i) / (dmx(i) + vfail)
642 ELSE
643 dlim = dx(i) / (dmn(i) - vfail)
644 ENDIF
645 ELSEIF (ifail2(i) == 2) THEN
646 IF (fx(i) > zero) THEN
647 dlim = fx(i) / (dmx(i) + vfail)
648 ELSE
649 dlim = fx(i) / (dmn(i) - vfail)
650 ENDIF
651 ELSEIF (ifail2(i) == 3) THEN
652 dlim =
max(zero,e6(i,1)) / (dmx(i) + vfail)
653 ENDIF
654 ENDIF
655 IF (ifail(i) == 0) THEN
656! uniaxial rupture
657 IF ((xa*dlim) > one) THEN
658 off(i) = zero
659 nindx = nindx + 1
660 indx(nindx) = i
661 idel7nok = 1
662 ENDIF
663 ELSE
664
665 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
666 ENDIF
667 ENDIF
668 ENDDO
669
670 DO i=1,nel
671 iadbuf = ipm(7,mid(i)) - 1
672 ifunc(i) = 0
673 ifv(i) = ipm(10 + if2 + 2,mid(i))
674 ifunc2(i)= ipm(10 + if3 + 2,mid(i))
675 ifunc3(i)= ipm(10 + if4 + 2,mid(i))
676 iecrou(i)= nint(uparam(iadbuf + i13 + 2))
677 IF (iecrou(i) > 0) ifunc(i) = -1
678 ak(i) = uparam(iadbuf + i1 + 2)
679 b(i) = uparam(iadbuf + i2 + 2)
680 d(i) = uparam(iadbuf + i3 + 2)
681 ee(i) = uparam(iadbuf + i4 + 2)
682 gf3(i) = uparam(iadbuf + i5 + 2)
683 ff(i) = uparam(iadbuf + i6 + 2)
684 lscale(i)= uparam(iadbuf + i7 + 2)
685 dmn(i) = uparam(iadbuf + i8 + 2)
686 dmx(i) = uparam(iadbuf + i9 + 2)
687 ENDDO
688
689 kk = 1 + numelr * anim_fe(11)
690 IF (nuvar >= 2) coord_old => uvar(2,1:nel)
691 CALL redef3(python,
692 1 fy, yk, dy, fyep,
693 2 dyold, dpy, tf, npf,
694 3 yc, off, e6(1,2), dpy2,
695 4 anim(kk), anim_fe(12),posy,
696 5 xl0, dmn, dmx, dv,
697 6 ff, lscale, ee, gf3,
698 7 ifunc3, yieldy, aldp, ak,
699 8 b, d, iecrou, ifunc,
700 9 ifv, ifunc2, epla, coord_old,
701 a nel, nft, stf, sanin, dt1,
702 b iresp, impl_s, idyna, snpc,
703 c fx_max=fx_max)
704
705 DO i=1,nel
706 iadbuf = ipm(7,mid(i)) - 1
707 cc = uparam(iadbuf + nupar + 4)
708 cn = uparam(iadbuf + nupar + 10)
709 xa = uparam(iadbuf + nupar + 16)
710 xb = uparam(iadbuf + nupar + 22)
711 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero) THEN
712 IF (ifail2(i) == 0) THEN
713 xa = one
714 xb = two
715 IF (dy(i) > zero) THEN
716 dlim = dy(i) / dmx(i)
717 ELSE
718 dlim = dy(i) / dmn(i)
719 ENDIF
720 ELSE
721 vfail = cc * (abs(dv(i)/vrt(i)))**cn
722 IF (ifail2(i) == 1) THEN
723 IF (dy(i) > zero) THEN
724 dlim = dy(i) / (dmx(i) + vfail)
725 ELSE
726 dlim = dy(i) / (dmn(i) - vfail)
727 ENDIF
728 ELSEIF (ifail2(i) == 2) THEN
729 IF (fy(i) > zero) THEN
730 dlim = fy(i) / (dmx(i) + vfail)
731 ELSE
732 dlim = fy(i) / (dmn(i) - vfail)
733 ENDIF
734 ELSEIF (ifail2(i) == 3) THEN
735 dlim =
max(zero,e6(i,2)) / (dmx(i) + vfail)
736 ENDIF
737 ENDIF
738 IF (ifail(i) == 0) THEN
739
740 IF ((xa*dlim) > one) THEN
741 off(i) = zero
742 nindx = nindx + 1
743 indx(nindx) = i
744 idel7nok = 1
745 ENDIF
746 ELSE
747
748 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
749 ENDIF
750 ENDIF
751 ENDDO
752
753 DO i=1,nel
754 iadbuf = ipm(7,mid(i)) - 1
755 ifunc(i) = 0
756 ifv(i) = ipm(10 + if2 + 3,mid(i))
757 ifunc2(i)= ipm(10 + if3 + 3,mid(i))
758 ifunc3(i)= ipm(10 + if4 + 3,mid(i))
759 iecrou(i)= nint(uparam(iadbuf + i13 + 3))
760 IF (iecrou(i) > 0) ifunc(i) = -1
761 ak(i) = uparam(iadbuf + i1 + 3)
762 b(i) = uparam(iadbuf + i2 + 3)
763 d(i) = uparam(iadbuf + i3 + 3)
764 ee(i) = uparam(iadbuf + i4 + 3)
765 gf3(i) = uparam(iadbuf + i5 + 3)
766 ff(i) = uparam(iadbuf + i6 + 3)
767 lscale(i)= uparam(iadbuf + i7 + 3)
768 dmn(i) = uparam(iadbuf + i8 + 3)
769 dmx(i) = uparam(iadbuf + i9 + 3)
770 ENDDO
771
772 kk = 1 + numelr * (anim_fe(11)+anim_fe(12))
773 IF (nuvar >= 3) coord_old => uvar(3,1:nel)
774
775 CALL redef3(python,
776 1 fz, zk, dz, fzep,
777 2 dzold, dpz, tf, npf,
778 3 zc, off, e6(1,3), dpz2,
779 4 anim(kk), anim_fe(13),posz,
780 5 xl0, dmn, dmx, dv,
781 6 ff, lscale, ee, gf3,
782 7 ifunc3, yieldz, aldp, ak,
783 8 b, d, iecrou, ifunc,
784 9 ifv, ifunc2, epla, coord_old,
785 a nel, nft, stf, sanin, dt1,
786 b iresp, impl_s, idyna, snpc,
787 c fx_max=fx_max)
788
789 DO i=1,nel
790 iadbuf = ipm(7,mid(i)) - 1
791 cc = uparam(iadbuf + nupar + 5)
792 cn = uparam(iadbuf + nupar + 11)
793 xa = uparam(iadbuf + nupar + 17)
794 xb = uparam(iadbuf + nupar + 23)
795 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero) THEN
796 IF (ifail2(i) == 0) THEN
797 xa = one
798 xb = two
799 IF (dz(i) > zero)THEN
800 dlim = dz(i) / dmx(i)
801 ELSE
802 dlim = dz(i) / dmn(i)
803 ENDIF
804 ELSE
805 vfail = cc * (abs(dv(i)/vrt(i)))**cn
806 IF (ifail2(i) == 1) THEN
807 IF (dz(i) > zero) THEN
808 dlim = dz(i) / (dmx(i) + vfail)
809 ELSE
810 dlim = dz(i) / (dmn(i) - vfail)
811 ENDIF
812 ELSEIF (ifail2(i) == 2) THEN
813 IF (fz(i) > zero) THEN
814 dlim = fz(i) / (dmx(i) + vfail)
815 ELSE
816 dlim = fz(i) / (dmn(i) - vfail)
817 ENDIF
818 ELSEIF (ifail2(i) == 3) THEN
819 dlim =
max(zero,e6(i,3)) / (dmx(i) + vfail)
820 ENDIF
821 ENDIF
822 IF (ifail(i) == 0) THEN
823
824 IF ((xa*dlim) > one) THEN
825 off(i) = zero
826 nindx = nindx + 1
827 indx(nindx) = i
828 idel7nok = 1
829 ENDIF
830 ELSE
831
832 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
833 ENDIF
834 ENDIF
835 ENDDO
836
837
838
839 DO i=1,nel
840 iadbuf= ipm(7,mid(i)) - 1
841 xin(i)= uiner(i)
842 xk(i) = uparam(iadbuf + i11 + 4)
843 xc(i) = uparam(iadbuf + i12 + 4)
844 yk(i) = uparam(iadbuf + i11 + 5)
845 yc(i) = uparam(iadbuf + i12 + 5)
846 zk(i) = uparam(iadbuf + i11 + 6)
847 zc(i) = uparam(iadbuf + i12 + 6)
848 hx(i) = uparam(iadbuf + i14 + 4)
849 hy(i) = uparam(iadbuf + i14 + 5)
850 hz(i) = uparam(iadbuf + i14 + 6)
851
852 xhr(i)=
max(hx(i),hy(i),hz(i))
853
854 xkr(i)=
max(xk(i)*uparam(iadbuf + i1 + 4),
855 . yk(i)*uparam(iadbuf + i1 + 5),
856 . zk(i)*uparam(iadbuf + i1 + 6))+xkr(i)
857 xcr(i)=
max(xc(i),yc(i),zc(i)) + xhr(i) +xcr(i)+xh(i)
858 ENDDO
859
860 DO i=1,nel
861 dxold(i)=rx(i)
862 dyold(i)=ry(i)
863 dzold(i)=rz(i)
864 ENDDO
865
866 IF ( inispri /= 0 .AND. tt == zero) THEN
867 DO i=1,nel
868 dxold(i)=rx0(i)
869 dyold(i)=ry0(i)
870 dzold(i)=rz0(i)
871 ENDDO
872 ENDIF
873
874 DO i=1,nel
875 x21 = (rx2(i)-rx1(i))*dt1
876 y21 = (ry2(i)-ry1(i))*dt1
877 z21 = (rz2(i)-rz1(i))*dt1
878 rx(i) = dxold(i) + x21*exx2(i)+y21*eyx2(i)+z21*ezx2(i)
879 ry(i) = dyold(i) + x21*exy2(i)+y21*eyy2(i)+z21*ezy2(i)
880 rz(i) = dzold(i) + x21*exz2(i)+y21*eyz2(i)+z21*ezz2(i)
881 ENDDO
882
883 DO i=1,nel
884 iadbuf = ipm(7,mid(i)) - 1
885 ifunc(i) = 0
886 ifv(i) = ipm(10 + if2 + 4,mid(i))
887 ifunc2(i)= ipm(10 + if3 + 4,mid(i))
888 ifunc3(i)= ipm(10 + if4 + 4,mid(i))
889 iecrou(i)= nint(uparam(iadbuf + i13 + 4))
890 IF (iecrou(i) > 0) ifunc(i) = -1
891 ak(i) = uparam(iadbuf + i1 + 4)
892 b(i) = uparam(iadbuf + i2 + 4)
893 d(i) = uparam(iadbuf + i3 + 4)
894 ee(i) = uparam(iadbuf + i4 + 4)
895 gf3(i) = uparam(iadbuf + i5 + 4)
896 ff(i) = uparam(iadbuf + i6 + 4)
897 lscale(i)= uparam(iadbuf + i7 + 4)
898 dmn(i) = uparam(iadbuf + i8 + 4)
899 dmx(i) = uparam(iadbuf + i9 + 4)
900 ENDDO
901 IF (nuvar >= 4) coord_old => uvar(4,1:nel)
902
903 CALL redef3(python,
904 1 xmom, xk, rx, xmep,
905 2 dxold, rpx, tf, npf,
906 3 xc, off, e6(1,4), rpx2,
907 4 anim, 0, posxx,
908 5 xl0, dmn, dmx, dv,
909 6 ff, lscale, ee, gf3,
910 7 ifunc3, yieldx2, aldp, ak,
911 8 b, d, iecrou, ifunc,
912 9 ifv, ifunc2, epla, coord_old,
913 a nel, nft, stf, sanin, dt1,
914 b iresp, impl_s, idyna, snpc,
915 c fx_max=mx_max)
916
917 DO i=1,nel
918 iadbuf= ipm(7,mid(i)) - 1
919 cc = uparam(iadbuf + nupar + 6)
920 cn = uparam(iadbuf + nupar + 12)
921 xa = uparam(iadbuf + nupar + 18)
922 xb = uparam(iadbuf + nupar + 24)
923 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero) THEN
924 IF (ifail2(i) == 0) THEN
925 xa = one
926 xb = two
927 IF (rx(i) > zero) THEN
928 dlim = rx(i) / dmx(i)
929 ELSE
930 dlim = rx(i) / dmn(i)
931 ENDIF
932 ELSE
933 vfail = cc * (abs(dv(i)/vrr(i)))**cn
934 IF (ifail2(i) == 1) THEN
935 IF (rx(i) > zeroTHEN
936 dlim = rx(i) / (dmx(i) + vfail)
937 ELSE
938 dlim = rx(i) / (dmn(i) - vfail)
939 ENDIF
940 ELSEIF (ifail2(i) == 2) THEN
941 IF(xmom(i)>0.)THEN
942 dlim = xmom(i)/(dmx(i) + vfail)
943 ELSE
944 dlim = xmom(i)/(dmn(i) - vfail)
945 ENDIF
946 ELSEIF (ifail2(i) == 3) THEN
947 dlim =
max(zero,e6(i,4)) / (dmx(i) + vfail)
948 ENDIF
949 ENDIF
950 IF (ifail(i) == 0) THEN
951
952 IF ((xa*dlim) > one) THEN
953 off(i)= zero
954 nindx = nindx + 1
955 indx(nindx) = i
956 idel7nok = 1
957 ENDIF
958 ELSE
959
960 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
961 ENDIF
962 ENDIF
963 ENDDO
964
965 DO i=1,nel
966 iadbuf = ipm(7,mid(i)) - 1
967 ifunc(i) = 0
968 ifv(i) = ipm(10 + if2 + 5,mid(i))
969 ifunc2(i)= ipm(10 + if3 + 5,mid(i))
970 ifunc3(i)= ipm(10 + if4 + 5,mid(i))
971 iecrou(i)= nint(uparam(iadbuf
972 IF (iecrou(i) > 0) ifunc(i) = -1
973 ak(i) = uparam(iadbuf + i1 + 5)
974 b(i) = uparam(iadbuf + i2 + 5)
975 d(i) = uparam(iadbuf + i3 + 5)
976 ee(i) = uparam(iadbuf + i4 + 5)
977 gf3(i) = uparam(iadbuf + i5 + 5)
978 ff(i) = uparam(iadbuf + i6 + 5)
979 lscale(i)= uparam(iadbuf + i7 + 5)
980 dmn(i) = uparam(iadbuf + i8 + 5)
981 dmx(i) = uparam(iadbuf + i9 + 5)
982 ENDDO
983 IF (nuvar >= 5) coord_old => uvar(5,1:nel)
984
985 CALL redef3(python,
986 1 ymom, yk, ry, ymep,
987 2 dyold, rpy, tf, npf,
988 3 yc, off, e6(1,5), rpy2,
989 4 anim, 0, posyy,
990 5 xl0, dmn, dmx, dv,
991 6 ff, lscale, ee, gf3,
992 7 ifunc3, yieldy2, aldp, ak,
993 8 b, d, iecrou, ifunc,
994 9 ifv, ifunc2, epla, coord_old,
995 a nel, nft, stf, sanin, dt1
996 b iresp, impl_s, idyna, snpc,
997 c fx_max=mx_max)
998
999 DO i=1,nel
1000 iadbuf= ipm(7,mid(i)) - 1
1001 cc = uparam(iadbuf + nupar + 7)
1002 cn = uparam(iadbuf + nupar + 13)
1003 xa = uparam(iadbuf + nupar + 19)
1004 xb = uparam(iadbuf + nupar + 25)
1005 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero) THEN
1006 IF (ifail2(i) == 0) THEN
1007 xa = one
1008 xb = two
1009 IF (ry(i) > zero) THEN
1010 dlim = ry(i) / dmx(i)
1011 ELSE
1012 dlim = ry(i) / dmn(i)
1013 ENDIF
1014 ELSE
1015 vfail = cc * (abs(dv(i)/vrr(i)))**cn
1016 IF (ifail2(i) == 1) THEN
1017 IF (ry(i) > zero) THEN
1018 dlim = ry(i) / (dmx(i) + vfail)
1019 ELSE
1020 dlim = ry(i) / (dmn(i) - vfail)
1021 ENDIF
1022 ELSEIF (ifail2(i) == 2) THEN
1023 IF (ymom(i) > zero)THEN
1024 dlim = ymom(i)/(dmx(i) + vfail)
1025 ELSE
1026 dlim = ymom(i)/(dmn(i) - vfail)
1027 ENDIF
1028 ELSEIF (ifail2(i) == 3) THEN
1029 dlim =
max(zero,e6(i,5)) / (dmx(i) + vfail)
1030 ENDIF
1031 ENDIF
1032 IF (ifail(i) == 0) THEN
1033
1034 IF ((xa*dlim) > 1) THEN
1035 off(i) = zero
1036 nindx = nindx + 1
1037 indx(nindx) = i
1038 idel7nok = 1
1039 ENDIF
1040 ELSE
1041
1042 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
1043 ENDIF
1044 ENDIF
1045 ENDDO
1046
1047 DO i=1,nel
1048 iadbuf = ipm(7,mid(i)) - 1
1049 ifunc(i) = 0
1050 ifv(i) = ipm(10 + if2 + 6,mid(i))
1051 ifunc2(i)= ipm(10 + if3 + 6,mid(i))
1052 ifunc3(i)= ipm(10 + if4 + 6,mid(i))
1053 iecrou(i)= nint(uparam(iadbuf + i13 + 6))
1054 IF (iecrou(i) > 0) ifunc(i) = -1
1055 ak(i) = uparam(iadbuf + i1 + 6)
1056 b(i) = uparam(iadbuf + i2 + 6)
1057 d(i) = uparam(iadbuf + i3 + 6)
1058 ee(i) = uparam(iadbuf + i4 + 6)
1059 gf3(i) = uparam(iadbuf + i5 + 6)
1060 ff(i) = uparam(iadbuf + i6 + 6)
1061 lscale(i)= uparam(iadbuf + i7 + 6)
1062 dmn(i) = uparam(iadbuf + i8 + 6)
1063 dmx(i) = uparam(iadbuf + i9 + 6)
1064 ENDDO
1065 IF (nuvar >= 6) coord_old => uvar(6,1:nel)
1066 CALL redef3(python,
1067 1 zmom, zk, rz, zmep,
1068 2 dzold, rpz, tf, npf,
1069 3 zc, off, e6(1,6), rpz2,
1070 4 anim, 0, poszz,
1071 5 xl0, dmn, dmx, dv,
1072 6 ff, lscale, ee, gf3,
1073 7 ifunc3, yieldz2, aldp, ak,
1074 8 b, d, iecrou, ifunc,
1075 9 ifv, ifunc2, epla, coord_old,
1076 a nel, nft, stf, sanin, dt1,
1077 b iresp, impl_s, idyna, snpc,
1078 c fx_max=mx_max)
1079
1080 DO i=1,nel
1081 iadbuf= ipm(7,mid(i)) - 1
1082 cc = uparam(iadbuf + nupar + 8)
1083 cn = uparam(iadbuf + nupar + 14)
1084 xa = uparam(iadbuf + nupar + 20)
1085 xb = uparam(iadbuf + nupar + 26)
1086 IF (off(i) == one .AND. dmx(i) /= zero .AND. dmn(i) /= zero) THEN
1087 IF (ifail2(i) == 0) THEN
1088 xa = one
1089 xb = two
1090 IF (rz(i) > zero) THEN
1091 dlim = rz(i) / dmx(i)
1092 ELSE
1093 dlim = rz(i) / dmn(i)
1094 ENDIF
1095 ELSE
1096 vfail = cc * (abs(dv(i)/vrr(i)))**cn
1097 IF (ifail2(i) == 1) THEN
1098 IF (rz(i) > zero)THEN
1099 dlim = rz(i) / (dmx(i) + vfail)
1100 ELSE
1101 dlim = rz(i) / (dmn(i) - vfail)
1102 ENDIF
1103 ELSEIF (ifail2(i) == 2) THEN
1104 IF (zmom(i) > zero)THEN
1105 dlim = zmom(i)/(dmx(i) + vfail)
1106 ELSE
1107 dlim = zmom(i)/(dmn(i) - vfail)
1108 ENDIF
1109 ELSEIF (ifail2(i) == 3) THEN
1110 dlim =
max(zero,e6(i,6)) / (dmx(i) + vfail)
1111 ENDIF
1112 ENDIF
1113 IF (ifail(i) == 0) THEN
1114
1115 IF ((xa*dlim) > 1) THEN
1116 off(i) = zero
1117 nindx = nindx + 1
1118 indx(nindx) = i
1119 idel7nok = 1
1120 ENDIF
1121 ELSE
1122
1123 crit(i)= crit(i) + xa *(dlim/xl0(i))**xb
1124 ENDIF
1125 ENDIF
1126 ENDDO
1127
1128 DO i=1,nel
1129 e(i) = e6(i,1)+e6(i,2)+e6(i,3)+e6(i,4)+e6(i,5)+e6(i,6)
1130 ENDDO
1131
1132
1133
1134 DO i=1,nel
1135 iadbuf = ipm(7,mid(i)) - 1
1136 israte = nint(uparam(iadbuf + nupar + 27))
1137
1138 asrate = (2*pi*uparam(iadbuf + nupar + 28)*dt1)/(one+2*pi*uparam(iadbuf + nupar + 28)*dt1)
1139 IF (israte /= 0) THEN
1140 crit(i) = asrate*crit(i) + (one - asrate)*crit_new(i)
1141 crit_new(i) = crit(i)
1142 ENDIF
1143 IF (off(i) == one .AND. ifail(i) == 1) THEN
1144 IF (crit(i) > one) THEN
1145 off(i)=zero
1146 nindx = nindx + 1
1147 indx(nindx) = i
1148 idel7nok = 1
1149 ENDIF
1150 ENDIF
1151 ENDDO
1152
1153 DO j=1,nindx
1154 i = indx(j)
1155#include "lockon.inc"
1156 WRITE(iout, 1000) ngl(i)
1157 WRITE(istdo,1100) ngl(i),tt
1158#include "lockoff.inc"
1159 ENDDO
1160
1161
1162
1164 1 xk, rpx, tf, npf,
1165 2 iecrou, ifunc, ifv, epla,
1166 3 nel)
1168 1 yk, rpy, tf, npf,
1169 2 iecrou, ifunc, ifv, epla,
1170 3 nel)
1172 1 zk, rpz, tf, npf,
1173 2 iecrou, ifunc, ifv, epla,
1174 3 nel)
1175
1176 DO i=1,nel
1177 iadbuf= ipm(7,mid(i))
1178 xk(i)=uparam(iadbuf + i11 + 1)
1179 yk(i)=uparam(iadbuf + i11 + 2)
1180 zk(i)=uparam(iadbuf + i11 + 3)
1181 ENDDO
1182
1184 1 xk, dpx, tf, npf,
1185 2 iecrou, ifunc, ifv, epla,
1186 3 nel)
1188 1 yk, dpy, tf, npf,
1189 2 iecrou, ifunc, ifv, epla,
1190 3 nel)
1192 1 zk, dpz, tf, npf,
1193 2 iecrou, ifunc, ifv, epla,
1194 3 nel)
1195 DO i=1,nel
1196
1197 xkm(i)=xkm(i)/xl0(i)
1198 xcm(i)=xcm(i)/xl0(i)
1199
1200 xkr(i)=xkr(i)/xl0(i)
1201 xcr(i)=xcr(i)/xl0(i)
1202 ENDDO
1203
1204 1000 FORMAT(1x,'-- RUPTURE OF SPRING ELEMENT NUMBER ',i10)
1205 1100 FORMAT(1x,'-- RUPTURE OF SPRING ELEMENT :',i10,' AT TIME :',g11.4)
1206
1207 RETURN
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
subroutine material_flow(dfs, dfs_old, aldp, slipring_strand, xk, off, al0, al02, lmin, update_flag, ring_slip, slipring_id, xl0, dl, dlold, exdp, eydp, ezdp, x1dp, x2dp, x3dp, adher, nc1, nc2, nc3, flag_slipring_update, add_node1, add_node2, vx1, vy1, vz1, vx2, vy2, vz2, vx3, vy3, vz3, xc, retractor_id, flag_retractor_update, sensor_tab, al0dp, fr_id, ddf, fx, fx2, aldp2, al0dp2, ex2dp, ey2dp, ez2dp, xl02, xk2, compt, index2, nsensor)
type(retractor_struct), dimension(:), allocatable retractor
type(slipring_struct), dimension(:), allocatable slipring
subroutine repla3(xk, dpx, tf, npf, iecrou, ifunc, ifv, epla, nel)