32 3 THK ,DIR1 ,DIR2 ,NUVAR ,UVAR ,
33 4 NBFUNC ,IFUNC ,NPF ,TF ,AREA ,
38#include "implicit_f.inc"
46 INTEGER :: NEL,NUPARAM,NIPARAM,NUVAR,NBFUNC
47 INTEGER ,
INTENT(IN) :: IFUNC(NBFUNC)
48 INTEGER ,
INTENT(IN) :: IPARAM(NIPARAM)
49 my_real ,
INTENT(IN) :: UPARAM(NUPARAM)
50 my_real ::
for(nel,5),thk(*),uvar(nel,nuvar),
area(nel),
52 . exx(nel),eyy(nel),exy(nel)
60 INTEGER I,J,MX,NC,NT,,NITER,FLAGUL
62 . KC,KT,KFC,KFT,G0,GT,GB,TAN_LOCK,VISCE,VISCG,,LT0,
63 . KBC,KBT,DC0,DT0,HC0,HT0,ETC,ETT,DC,DT,TRACE,R3R3,S3S3,
64 . ac,at,bc,bt,bc2,bt2,cc,tt,func,funt,deric,derit,
65 . y,ec2,et2,sigc,sigt,udc,udt,fc,ft,fact,sig0,
66 . fpc,fpt,ccl,ttl,dec,det,hc,ht,kf,kmax,hdc,hdt,
67 . tan_phi,rfac,rfat,r1,r2,r3,s1,s2,s3,t1,t2,t3,rs1,rs2,rs3,
68 . r12,s12,r22,s22,zerostress,flex1,flex2,yfac(6),phi,gxy,ddec,ddet,
69 . dcc1,dtt1,dcc,dtt,kkc,kkt
71 . ec(mvsiz),et(mvsiz),lc(mvsiz),lt(mvsiz),fn(mvsiz),
72 . yc(mvsiz),yt(mvsiz),degmb(mvsiz),
73 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),
74 . signxx(mvsiz),signyy(mvsiz),signxy(mvsiz),
75 . tens(3,mvsiz),emincrl(mvsiz),emintrl(mvsiz),eminsrl(mvsiz),
76 . epsnc(mvsiz),epsnt(mvsiz),epsns(mvsiz),emaxsl(mvsiz),emaxsrl(mvsiz),
77 . emaxcl(mvsiz),emaxcrl(mvsiz),emaxtl(mvsiz),emaxtrl(mvsiz),
78 . epsmaxc(mvsiz),epsmaxrlc(mvsiz),epsnrlc(mvsiz),
79 . slmaxrlc(mvsiz),slmaxrlt(mvsiz),slmaxs(mvsiz),slmins(mvsiz),
80 . epsmaxs(mvsiz),epsmaxrls(mvsiz),epsnrls(mvsiz),slmaxrls(mvsiz) ,
81 . slmaxc(mvsiz),epsmaxt(mvsiz),epsmaxrlt(mvsiz),epsnrlt(mvsiz),
82 . slmaxt(mvsiz),phio(mvsiz),slminc(mvsiz),slmint(mvsiz)
104 tan_lock = uparam(16)
109 zerostress = uparam(24)
118 IF (kbc == zero)
THEN
123 IF (kbt == zero)
THEN
130 degmb(i) =
for(i,1)*exx(i)+
for(i,2)*eyy(i)+
for(i,3)*exy(i)
146 depsxx(i) = r1*r1*t1 + s1*s1*t2 + two*r1*s1*t3
147 depsyy(i) = r2*r2*t1 + s2*s2*t2 + two*r2*s2*t3
148 depsxy(i) = (r1*r2 + s1*s2) / (r1*s2 - r2*s1)
150 etc = uvar(i,4) + depsxx(i)
151 ett = uvar(i,5) + depsyy(i)
154 ec(i) = exp(etc) - one
155 et(i) = exp(ett) - one
161 lc(i) = lc0 * (one + ec(i))
162 lt(i) = lt0 * (one + et(i))
177 dc = sqrt(lc(i)*lc(i) + hc*hc)
178 dt = sqrt(lt(i)*lt(i) + ht*ht)
185 IF(ifunc(1) /= 0)
THEN
186 fc = yfac(1)*finter(ifunc(1),cc,npf,tf,fpc)
189 kfc = flex1*fpc*hc0/dc0
191 ELSEIF (cc >= ccl )
THEN
195 fc = (kc - half*kbc * cc) * cc
196 fpc = (kc - kbc*cc) * hdc
198 IF(ifunc(2) /= 0)
THEN
199 ft = yfac(2)*finter(ifunc(2),tt,npf,tf,fpt)
202 kft = flex2*fpt*ht0/dt0
204 ELSEIF (tt >= ttl )
THEN
208 ft = (kt - half*kbt * tt) * tt
209 fpt = (kt - kbt*tt) * hdt
211 func = kfc*yc(i) + fc*hc/dc
212 funt = kft*yt(i) + ft*ht/dt
213 deric= kfc + fpc*hdc + fc*udc*(one - hdc*hdc)
214 derit= kft + fpt*hdt + ft*udt*(one - hdt*hdt)
216 yc(i) = yc(i) - func / deric
217 yt(i) = yt(i) - funt / derit
221 IF ((yc(i) + yt(i)) < zero)
THEN
222 y = half * (uvar(i,7) - uvar(i,8))
226 dc = sqrt(lc(i)*lc(i) + hc*hc)
227 dt = sqrt(lt(i)*lt(i) + ht*ht)
234 IF(ifunc(1) /= 0)
THEN
235 fc =yfac(1)* finter(ifunc(1),cc,npf
238 kfc = flex1*fpc*hc0/dc0
240 ELSEIF (cc >= ccl )
THEN
244 fc = (kc - half*kbc * cc) * cc
245 fpc = (kc - kbc*cc) * hdc
247 IF(ifunc(2) /= 0)
THEN
248 ft = yfac(2)*finter(ifunc(2),tt,npf,tf,fpt)
251 kft = flex2*fpt*ht0/dt0
253 ELSEIF (tt >= ttl )
THEN
257 ft = (kt - half*kbt * tt) * tt
258 fpt = (kt - kbt*tt) * hdt
262 func = kf*y + fc * hdc - ft * hdt
263 deric = kf + fpc*hdc + fc*udc*(one - hdc*hdc)
264 . + fpt*hdt + ft*udt*(one - hdt*hdt)
275 fn(i) = fc*hc/dc + ft*ht/dt
279 dc = sqrt(lc(i)*lc(i) + hc*hc)
280 dt = sqrt(lt(i)*lt(i) + ht*ht)
286 dc = sqrt(lc(i)*lc(i) + hc*hc)
287 dt = sqrt(lt(i)*lt(i) + ht*ht)
290 IF(ifunc(1) /= 0)
THEN
291 fc =yfac(1)* finter(ifunc(1),cc,npf,tf,fpc)
294 ELSEIF (cc >= ccl )
THEN
297 fc = (kc - half*kbc * cc) * cc
299 IF(ifunc(2) /= 0)
THEN
300 ft = yfac(2)*finter(ifunc(2),tt,npf,tf,fpt)
303 ELSEIF (tt >= ttl )
THEN
306 ft = (kt - half*kbt * tt) * tt
309 trace = exp(gstr(i,1) + gstr(i,2))
310 IF (trace /= zero)
THEN
311 ec2 = trace /
max((ec(i) + one), em6)
312 et2 = trace /
max((et(i) + one), em6)
320 sigc = rfac * fc * lc(i) / dc
321 sigt = rfat * ft * lt(i) / dt
327 phi = atan(tan_phi)*hundred80/pi
328 IF (ifunc(3) /= 0)
THEN
329 signxy(i) =yfac(3)* finter(ifunc(3),phi,npf,tf,gxy)
331 ELSEIF (tan_phi > tan_lock)
THEN
332 signxy(i) = gt*tan_phi + gb - sig0
333 ELSEIF (tan_phi < -tan_lock)
THEN
334 signxy(i) = gt*tan_phi - gb - sig0
336 signxy(i) = g0*tan_phi - sig0
341 uvar(i,6) = depsxy(i)
352 epsmaxc(i) = uvar(i,17)
353 emincrl(i) = uvar(i,18)
354 epsmaxrlc(i) = uvar(i,19)
355 slmaxc(i) = uvar(i,20)
356 epsmaxt(i) = uvar(i,21)
357 emintrl(i) = uvar(i,22)
358 epsmaxrlt(i) = uvar(i,23)
359 slmaxt(i) = uvar(i,24)
360 slminc(i) = uvar(i,25)
361 slmint(i) = uvar(i,26)
362 slmaxrlc(i) = uvar(i,27)
363 slmaxrlt(i) = uvar(i,28)
364 epsmaxs(i) = uvar(i,30)
365 eminsrl(i) = uvar(i,31)
366 slmaxs(i) = uvar(i,32)
367 slmins(i) = uvar(i,33)
368 epsmaxrls(i) = uvar(i,34)
369 slmaxrls(i) = uvar(i,35)
378 dc = sqrt(lc(i)*lc(i) + hc*hc)
379 dt = sqrt(lt(i)*lt(i) + ht*ht)
380 dcc = uvar(i,15) - dc0
381 dtt = uvar(i,16) - dt0
383 ddec = dc - uvar(i,15)
384 ddet = dt - uvar(i,16)
389 dc = sqrt(lc(i)*lc(i) + hc*hc)
393 dcc =
max(uvar(i,18),dcc)
397 fc = yfac(1) * finter(ifunc(1),dcc,npf,tf,fpc)
403 slmaxrlc(i) = slmaxc(i)
404 epsmaxrlc(i)= epsmaxc(i)
405 func = kfc*yc(i) + fc*hc/dc
406 deric= kfc + fpc*hdc + fc*udc*(one - hdc*hdc)
407 yc(i) = yc(i) - func / deric
412 dc = sqrt(lc(i)*lc(i) + hc*hc)
420 func = kfc*yc(i) + fc*hc/dc
421 deric= kfc + fpc*hdc + fc*udc*(one - hdc*hdc)
422 yc(i) = yc(i) - func / deric
439 dt = sqrt(lt(i)*lt(i) + ht*ht)
441 hdt = ht * udt !sinus(
alpha)
443 dtt =
max(uvar(i,22),dtt)
447 ft = yfac(2)*finter(ifunc(2),dtt,npf,tf,fpt)
453 slmaxrlt(i) = slmaxt(i)
454 epsmaxrlt(i)= epsmaxt(i)
457 funt = kft*yt(i) + ft*ht/dt
458 derit= kft + fpt*hdt + ft*udt*(one - hdt*hdt)
459 yt(i) = yt(i) - funt / derit
464 dt = sqrt(lt(i)*lt(i) + ht*ht) ! long fibre
471 funt = kft*yt(i) + ft*ht/dt
472 derit= kft + fpt*hdt + ft*udt*(one - hdt*hdt)
473 yt(i) = yt(i) - funt / derit
487 IF ((yc(i) + yt(i)) < zero)
THEN
490 dc = sqrt(lc(i)*lc(i) + hc*hc)
491 dt = sqrt(lt(i)*lt(i) + ht*ht)
492 ddec = dc - uvar(i,15)
493 ddet = dt - uvar(i,16)
495 y = half * (uvar(i,7) - uvar(i,8))
498 dc = sqrt(lc(i)*lc(i) + hc*hc)
499 dt = sqrt(lt(i)*lt(i) + ht*ht)
500 dcc1 = uvar(i,15) - dc0
501 dtt1 = uvar(i,16) - dt0
506 dc = sqrt(lc(i)*lc(i) + hc*hc)
507 dt = sqrt(lt(i)*lt(i) + ht*ht)
514 IF(dcc1 >=zero )
THEN
516 fc = yfac(1) * finter(ifunc(1),dcc,npf,tf,fpc)
522 slmaxrlc(i) = slmaxc(i)
523 epsmaxrlc(i)= epsmaxc(i)
541 IF(dtt1 >=zero )
THEN
542 ft = yfac(2)*finter(ifunc(2),dtt,npf,tf,fpt)
548 slmaxrlt(i) = slmaxt(i)
549 epsmaxrlt(i)= epsmaxt(i)
555 fpt = kkt * hdt! derivee % yT
565 func = kf*y + fc * hdc - ft * hdt
566 deric = kf + fpc*hdc + fc*udc*(one - hdc*hdc)
567 . + fpt*hdt + ft*udt*(one - hdt*hdt)
578 fn(i) = fc*hc/dc + ft*ht/dt
582 dc = sqrt(lc(i)*lc(i) + hc*hc)
583 dt = sqrt(lt(i)*lt(i) + ht*ht)
587 trace = exp(gstr(i,1) + gstr(i,2))
588 IF (trace /= zero)
THEN
589 ec2 = trace /
max((ec(i) + one), em6)
590 et2 = trace /
max((et(i) + one), em6)
598 sigc = rfac * fc * lc(i) / dc
599 sigt = rfat * ft * lt(i) / dt
605 phi = atan(tan_phi)*hundred80/pi
606 signxy(i) =yfac(3)* finter(ifunc(3),phi,npf,tf,gxy)
612 uvar(i,6) = depsxy(i)
616 uvar(i,17) = epsmaxc(i)
617 uvar(i,18) = emincrl(i)
618 uvar(i,19) = epsmaxrlc(i)
619 uvar(i,20) = slmaxc(i)
620 uvar(i,21) = epsmaxt(i)
621 uvar(i,22) = emintrl(i)
622 uvar(i,23) = epsmaxrlt(i)
623 uvar(i,24) = slmaxt(i)
624 uvar(i,25) = slminc(i)
626 uvar(i,27) = slmaxrlc(i)
627 uvar(i,28) = slmaxrlt(i)
628 uvar(i,30) = epsmaxs(i)
629 uvar(i,31) = eminsrl(i)
630 uvar(i,32) = slmaxs(i)
631 uvar(i,33) = slmins(i)
632 uvar(i,34) = epsmaxrls(i)
633 uvar(i,35) = slmaxrls(i)
640 tens(1,i) = signxx(i)
641 tens(2,i) = signyy(i)
657 r3r3= one+s1*r2+r1*s2
659 s3s3= one-s1*r2-r1*s2
664 tens(1,i) = r12*t1 + r22*t2 - rs3*t3
665 tens(2,i) = s12*t1 + s22*t2 + rs3*t3
666 tens(3,i) = rs1*t1 + rs2*t2 + (r3r3 - s3s3)*t3
672 for(i,1)=
for(i,1) + thk(i)*tens(1,i)
673 for(i,2)=
for(i,2) + thk(i)*tens(2,i)
674 for(i,3)=
for(i,3) + thk(i)*tens(3,i)
679 +
for(i,1)*exx(i)+
for(i,2)*eyy(i)+
for(i,3)*exy(i)
680 eint(i,1) = eint(i,1) + degmb(i)*half*thk(i)*
area(i)
685 IF(zerostress /= zero)
THEN
687 uvar(i,11) = signxx(i)
688 uvar(i,12) = signyy(i)
689 uvar(i,13) = signxy(i)