30 1 NEL ,NUPARAM ,NUVAR ,TIME ,TIMESTEP ,UPARAM ,
31 2 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,NPTOT ,
32 3 NGL ,DPLA ,UVAR ,OFF ,DFMAX ,TDELE ,
33 4 AREA ,FOFF ,IGTYP ,OFFL ,IPT ,THK0 )
37#include "implicit_f.inc"
42 INTEGER NEL, NUPARAM, NUVAR,NGL(NEL),IGTYP,IPT,
44 my_real TIME,TIMESTEP,UPARAM(*),
45 . SIGNXX(NEL),SIGNYY(NEL),OFFL(NEL),
46 . signxy(nel),signyz(nel),signzx(nel),uvar(nel,nuvar),
47 . dpla(nel),off(nel),dfmax(nel),tdele(nel),
area(nel),thk0(nel)
48 INTEGER,
DIMENSION(NEL),
INTENT(INOUT) :: FOFF
52 INTEGER I,J,INDX(NEL),NINDX,CONDITION(NEL),INST
54 . NHARD,EPSCAL,P,triaxs,vmises,hydros,EPS_CR,F_RTCL
61 inst = nint(uparam(2))
65 IF (uvar(1,1) == zero)
THEN
67 uvar(i,1) = sqrt(
area(i))
81 IF (off(i) == one .AND. dpla(i) /= zero)
THEN
84 hydros = (signxx(i)+ signyy(i))/three
85 vmises = sqrt((signxx(i)**2)+(signyy(i)**2)-(signxx(i)*signyy(i))+(three*signxy(i)**2))
86 triaxs = hydros /
max(em20,vmises)
87 IF (triaxs > two_third) triaxs = two_third
88 IF (triaxs < -two_third) triaxs = -two_third
91 IF (triaxs < -third)
THEN
93 ELSEIF ((triaxs >= -third).AND.(triaxs < third))
THEN
94 f_rtcl = two*((one+triaxs*sqrt(twelve-twenty7*(triaxs**2)))/
95 . (three*triaxs+sqrt(twelve-twenty7*(triaxs**2))))
97 f_rtcl = exp(-half)*exp(three_half*triaxs)
102 eps_cr = nhard + (epscal - nhard)*(uvar(i,2)/uvar(i,1))
108 dfmax(i) = dfmax(i) + f_rtcl*dpla(i)/
max(eps_cr,em6)
109 dfmax(i) =
min(one,dfmax(i))
112 IF (offl(i) == one .AND. dfmax(i) >= one)
THEN
117 condition(nindx) = ipt
127 IF(condition(j) >= 1)
THEN
128 WRITE(iout, 2000) ngl(i),condition(j),time
129 WRITE(istdo,2000) ngl(i),condition
131#include "lockoff.inc"
135 2000
FORMAT(1x,
'FOR SHELL ELEMENT (RTCL)',i10,1x,
'LAYER',i3,
':',/,
136 . 1x,
'STRESS TENSOR SET TO ZERO',1x,
'AT TIME :',1pe12.4)
subroutine fail_rtcl_c(nel, nuparam, nuvar, time, timestep, uparam, signxx, signyy, signxy, signyz, signzx, nptot, ngl, dpla, uvar, off, dfmax, tdele, area, foff, igtyp, offl, ipt, thk0)