39 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
40 2 NFUNC ,IFUNC ,TABLE ,NPF ,TF ,
41 3 TIME ,NGL ,IPG ,ILAY ,IPT ,
42 4 SIGNXX ,SIGNYY ,SIGNXY ,NTABLF ,ITABLF ,
43 5 DPLA ,EPSP ,THK ,ALDT ,TEMP ,
44 6 DMG_FLAG ,DMG_SCALE,OFF ,FOFF ,
45 7 DFMAX ,TDEL ,INLOC )
55#include "implicit_f.inc"
95 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,,ILAY,IPT,INLOC,NTABLF
96 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
97 INTEGER,
DIMENSION(NTABLF) ,
INTENT(IN) :: ITABLF
98 my_real ,
INTENT(IN) :: TIME
99 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: OFF,THK,ALDT,DPLA,EPSP,
100 . TEMP,SIGNXX,SIGNYY,SIGNXY
101 my_real,
DIMENSION(NUPARAM) ,
INTENT(IN) :: UPARAM
105 INTEGER ,
INTENT(OUT) ::DMG_FLAG
106 INTEGER ,
DIMENSION(NEL) ,
INTENT(INOUT) :: FOFF
107 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: DFMAX
108 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: tdel,dmg_scale
109 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
113 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
114 my_real finter ,tf(*)
127 INTEGER :: I,J,NINDX,,NINSTAB,IFAIL_SH,NDIM,INST_FLAG,SIZE_FLAG,
128 . ITAB_EPSF,ITAB_INST,IFUN_EL,IFUN_TEMP,IFUN_DMG,IFUN_FAD
129 INTEGER,
DIMENSION(MVSIZ) :: INDX,INDXF,INDSTAB,IPOSV,IADP,ILENP
130 INTEGER IPOST1(NEL,1),IPOST2(NEL,2),IPOST3(NEL,3)
132 my_real :: SHRF,BIAXF
133 my_real,
DIMENSION(MVSIZ) :: EPSF,EPSF_N,SIGM,YYV,DXDYV,LAMBDAV
134 my_real,
DIMENSION(2) :: xx2
135 my_real,
DIMENSION(NEL,1) :: xxv1
136 my_real,
DIMENSION(NEL,2) :: xxv2
137 my_real,
DIMENSION(NEL,3) :: xxv3
138 my_real :: p,svm,df,fac,lambda,
139 . y1scale,x1scale,y2scale,x2scale,p_thinn,
ecrit,fade_expo,
140 . dcrit,el_ref,sc_el,sc_temp,p_thick,dd,dn,yy_n
141 my_real,
DIMENSION(MVSIZ) :: dp
143 INTEGER,
DIMENSION(MVSIZ) :: INDX_2
155 ifail_sh = int(uparam(2))
169 fade_expo = uparam(18)
170 dmg_flag = int(uparam(19))
171 inst_flag = int(uparam(20))
174 IF (shrf == -one .and. biaxf == one)
THEN
181 itab_epsf = itablf(1)
183 itab_inst = itablf(2)
188 ifun_fad = ifunc(4) ! fading exponent
194 IF (inloc > 0) uvar(i,5) = aldt(i)
195 IF (off(i) == one .and. foff(i) == 1)
THEN
205 ndim = table(itab_epsf)%NDIM
206#include "vectorize.inc"
209 p = third*(signxx(i) + signyy(i))
210 svm = sqrt(signxx(i)*signxx(i) + signyy(i)*signyy(i)
211 . - signxx(i)*signyy(i) + three*signxy(i)*signxy(i))
212 sigm(i) = p /
max(em20,svm)
216#include "vectorize.inc"
220 xxv3(j,2) = epsp(i)*x1scale
222 ipost3(j,1)= nint(uvar(i,6))
223 ipost3(j,2)= nint(uvar(i,7))
226 ELSE IF (ndim == 2)
THEN
227#include "vectorize.inc"
231 xxv2(j,2) = epsp(i)*x1scale
232 ipost2(j,1)= nint(uvar(i,6))
233 ipost2(j,2)= nint(uvar(i,7))
235 ELSE IF (ndim == 1)
THEN
236#include "vectorize.inc"
240 ipost1(j,1) = nint(uvar(i,6))
245 IF (size_flag == 1)
THEN
246#include "vectorize.inc"
249 IF (sigm(i) > shrf .and. sigm(i) < biaxf)
THEN
250 ninstab = ninstab + 1
260#include "vectorize.inc"
263 epsf(i) = yyv(j) * y1scale
264 uvar(i,6)= ipost3(j,1)
265 uvar(i,7)= ipost3(j,2)
268 ELSE IF (ndim == 2)
THEN
270 CALL table_vinterp (table(itab_epsf),nel,nindx,ipost2,xxv2,yyv,dxdyv)
272#include "vectorize.inc"
275 epsf(i) = yyv(j) * y1scale
276 uvar(i,6)=ipost2(j,1)
277 uvar(i,7)=ipost2(j,2)
280 ELSE IF (ndim == 1)
THEN
282 CALL table_vinterp (table(itab_epsf),nel,nindx,ipost1,xxv1,yyv,dxdyv)
284#include "vectorize.inc"
287 epsf(i) = yyv(j) * y1scale
293 IF (ifun_el > 0 .AND. inst_flag /= 2)
THEN
294 IF (size_flag == 0)
THEN
295#include "vectorize.inc"
299 lambdav(j) = uvar(i,5) / el_ref
300 iposv(j) = nint(uvar(i,8))
301 iadp(j) = npf(ifun_el) / 2 + 1
302 ilenp(j) = npf(ifun_el + 1) / 2 -iadp(j) - iposv(j)
305 CALL vinter2(tf,iadp,iposv,ilenp,nindx,lambdav,dxdyv,yyv)
307#include "vectorize.inc"
311 epsf(i) = epsf(i)* fac
316#include "vectorize.inc"
320 lambdav(j) = uvar(i,5) / el_ref
321 iposv(j) = nint(uvar(i,8))
322 iadp(j) = npf(ifun_el) / 2 + 1
323 ilenp(j) = npf(ifun_el + 1) / 2 -iadp(j) - iposv(j)
326 CALL vinter2(tf,iadp,iposv,ilenp,ninstab,lambdav,dxdyv,yyv)
328#include "vectorize.inc"
332 epsf(i) = epsf(i)* fac
340 IF (itab_inst > 0)
THEN
342#include "vectorize.inc"
346 xx2(2) = epsp(i) *x2scale
348 epsf_n(i) = yy_n * y2scale
351 IF (ifun_el > 0 .AND. inst_flag /= 1)
THEN
352 IF (size_flag == 0)
THEN
353#include "vectorize.inc"
356 lambda = uvar(i,5) / el_ref
357 fac = sc_el*finter(ifun_el,lambda,npf,tf,df)
358 epsf_n(i) = epsf_n(i)* fac
361#include "vectorize.inc"
364 lambda = uvar(i,5) / el_ref
365 fac = sc_el*finter(ifun_el,lambda,npf,tf,df)
366 epsf_n(i) = epsf_n(i)* fac
371 ELSEIF (
ecrit > zero)
THEN
373#include "vectorize.inc"
379#include "vectorize.inc"
386 IF (ifun_temp > 0)
THEN
387#include "vectorize.inc"
390 fac = sc_temp*finter(ifun_temp,temp(i),npf,tf,df)
391 epsf(i) = epsf(i)* fac
396 IF (fade_expo < zero)
THEN
400 lambda = uvar(i,5) / el_ref
401 fade_expo = finter(ifun_fad,lambda,npf,tf,df)
406 IF (ifun_dmg > 0 )
THEN
407#include "vectorize.inc"
410IF (uvar(i,1) < dcrit)
THEN
411 nindx_2 = nindx_2 + 1
413 dp(i) = finter(ifun_dmg,uvar(i,1),npf,tf,df)
417#include "vectorize.inc"
420 IF (uvar(i,1) < dcrit)
THEN
421 nindx_2 = nindx_2 + 1
423 IF (uvar(i,1) == zero)
THEN
426 dp(i) = dn*uvar(i,1)**(one-one/dn)
431#include "vectorize.inc"
434 IF (epsf(i) > zero) uvar(i,1) = uvar(i,1)+dp(i)*dpla(i)/epsf(i)
435 IF ((p_thinn*uvar(i,2)) > thk
THEN
443 IF (dmg_flag == 1 .AND. uvar(i,1) <= dcrit)
THEN
444 IF (epsf_n(i) > zero .AND. sigm(i) >= zero )
THEN
445 uvar(i,3) = uvar(i,3) + dp(i)*dpla(i)/epsf_n(i)
448 IF (uvar(i,3) >= one)
THEN
449 IF (fade_expo /= zero)
THEN
451 IF (uvar(i,4) > dd)
THEN
452 dmg_scale(i) = one - ((uvar(i,4)-dd)/(one-dd))**fade_expo
453 dmg_scale(i) =
max(dmg_scale(i),zero)
461 IF (uvar(i,1) >= dcrit)
THEN
465 IF (ifail_sh == 3)
THEN
476#include "vectorize.inc"
479 dfmax(i)=
min(one,
max(dfmax(i),uvar(i,1)/dcrit))
488 WRITE(iout, 2000) ngl(i),ipg,ilay,ipt
489 WRITE(istdo,2100) ngl(i),ipg,ilay,ipt,time
490#include "lockoff.inc"
494 2000
FORMAT(1x,
'FAILURE (FTAB) OF SHELL ELEMENT ',i10,1x,
',GAUSS PT',
495 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3)
496 2100
FORMAT(1x,
'FAILURE (FTAB) OF SHELL ELEMENT ',i10,1x,
',GAUSS PT',
497 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3,1x,
'AT TIME :',1pe12.4)
subroutine fail_tab_c(nel, nuparam, nuvar, uparam, uvar, nfunc, ifunc, table, npf, tf, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, ntablf, itablf, dpla, epsp, thk, aldt, temp, dmg_flag, dmg_scale, off, foff, dfmax, tdel, inloc)