30 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
31 2 TIME ,NGL ,IPT ,ILAY ,IPTT ,
32 3 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
34 5 DFMAX ,TDEL ,UEL ,NPTOT ,
39#include "implicit_f.inc"
86 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,ILAY,IPT,NPTOT,IPTT
87 INTEGER ,
DIMENSION(NEL),
INTENT(IN) :: NGL
88 my_real ,
DIMENSION(NUPARAM),
INTENT(IN) :: UPARAM
89 my_real ,
DIMENSION(NEL),
INTENT(IN) :: DPLA,PLA
95 INTEGER ,
DIMENSION(NEL),
INTENT(INOUT) :: FOFF,FLD_IDX
96 my_real,
INTENT(IN) :: TIME
97 my_real ,
DIMENSION(NEL),
INTENT(IN) :: SIGNXX,SIGNYY,SIGNXY,SIGNYZ,SIGNZX
98 my_real ,
DIMENSION(NEL),
INTENT(INOUT) :: DFMAX, UEL,OFF,DAM
99 my_real ,
DIMENSION(NEL),
INTENT(OUT) :: TDEL
100 my_real,
DIMENSION(NEL,NUVAR),
INTENT(INOUT) :: UVAR
106 INTEGER :: I,J,K,N,NINDX,IFAIL_SH
107 INTEGER,
DIMENSION(NEL) :: INDX , CONDITION1, CONDITION2,CONDITION3
109 my_real AFRAC,BFRAC,CFRAC,NFRAC,INST,P_THICKFAIL
110 my_real SIGM,SIGVM,ETA,XI
111 my_real LODE,DAM1,DAM2,F1,F2,F3,EPSF
112 my_real ghc, g1, g2, g3, dsse
125 condition1(1:nel) = 0
126 condition2(1:nel) = 0
127 condition3(1:nel) = 0
136 IF (fld_idx(i) == 0) fld_idx(i) = 1
138 IF (dpla(i) > zero .and. off(i) == one .and. dam1 < one)
THEN
139 sigm = (signxx(i)+ signyy(i))*third
140 sigvm = sqrt((signxx(i)**2)+(signyy(i)**2)-(signxx(i)*signyy(i))+(3*signxy(i)**2))
141 eta = sigm /
max(em10,sigvm)
143 xi = -27.0*0.5*eta*(eta**2 - third)
144 IF (xi < -one) xi =-one
145 IF (xi > one) xi = one
147 lode = one - two*acos(xi)/pi
149 f1 = two/three*cos((one -lode)*pi/six)
150 f2 = two/three*cos((three+lode)*pi/six)
151 f3 =-two/three*cos((one +lode)*pi/six)
153 ghc= (half*((f1-f2)**afrac
155 . +(f1-f3)**afrac))**(one/afrac)
156 . +cfrac*(two*eta+f1+f3
158 IF (eta < -third)
THEN
161 ELSEIF(eta < two_third)
THEN
162 ghc= (half*(
max(f1-f2,zero)**afrac
163 . +
max(f2-f3,zero)**afrac
164 . +
max(f1-f3,zero)**afrac))**(one/afrac)
165 . +cfrac*(two*eta+f1+f3)
166 epsf = bfrac*((one+cfrac)/ghc)**(1.0/nfrac)
167 IF (eta > third .and. dam2 < one)
THEN
168 g1 = three/two*eta+sqrt(third+em20-0.75*(eta**2))
169 g2 = three/two*eta-sqrt(third+em20-0.75*(eta**2))
170 g3 = (half*((
max(zero,(g1-g2)))**inst+g1**inst+
171 . (
max(zero,g2))**inst))**(one/inst)
172 dsse = bfrac * g3**(-100)
173 dam2 = dam2 + dpla(i)/
max(em6,dsse)
182 ghc= (half*(
max(f1-f2,zero)**afrac
183 . +
max(f2-f3,zero)**afrac
184 . +
max(f1-f3,zero)**afrac))**(one/afrac)
185 . +cfrac*(two*eta+f1+f3)
187 epsf = bfrac*(one+cfrac)**(one/nfrac)
188 . * ((half*(
max(f1-f2,zero)**afrac
189 . +
max(f2-f3,zero)**afrac
190 . +
max(f1-f3,zero)**afrac))**(one/afrac)
191 . + cfrac*(two*eta+f1+f3))**(-one/nfrac)
196 dam1 = dam1 + dpla(i)/
max(em6,epsf)
197 dfmax(i) =
min(one,dam1)
198 IF ((dam1 >= one).AND.(ifail_sh < 3))
THEN
204 condition1(nindx) = ipt
207 IF (dam2 >= one .AND. uvar(i,1) == zero .AND. foff(i) == 1 .AND. ifail_sh < 3)
THEN
209 uel(i) = uel(i) + one
210 IF (int(uel(i)+1e-6) == nptot)
THEN
216 condition3(nindx) = 1
221 dam(i) =
min(pla(i)/
max(em6,epsf)
225 IF (((eta < third) .AND.(dam1<one)).OR.
226 . ((eta >= third).AND.(dam2<one)))
THEN
229 ELSEIF ((eta >= third).AND.(dam2>=one).AND.(dam1<one))
THEN
232 ELSEIF (dam1 >= one)
THEN
244 IF(condition1(j) >= 1)
THEN
245 WRITE(iout, 2000) ngl(i),condition1(j),time
246 WRITE(istdo,2000) ngl
248 IF(condition3(j)==1)
THEN
249 WRITE(istdo,3000) ngl(i)
250 WRITE(iout, 3000) ngl(i)
252 IF(condition2(j)==1)
THEN
253 WRITE(istdo,2200) ngl(i),
254 WRITE(iout, 2200) ngl(i), time
256#include "lockoff.inc"
261 2000
FORMAT(1x,
'FOR SHELL ELEMENT (HC-DSSE)',i10,1x,
'LAYER',i3,
':',/,
262 . 1x,
'STRESS TENSOR SET TO ZERO',1x,
'AT TIME :',1pe12.4)
264 2200
FORMAT(1x,
' *** RUPTURE OF SHELL ELEMENT (HC-DSSE)',i10,1x,
265 .
' AT TIME :',1pe12.4)
266 3000
FORMAT(1x,
'FOR SHELL ELEMENT (HC-DSSE)',i10,
267 . 1x,
'INSTABILITY REACHED.')
subroutine fail_hc_dsse_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipt, ilay, iptt, signxx, signyy, signxy, signyz, signzx, dpla, off, foff, dfmax, tdel, uel, nptot, fld_idx, dam, pla)