32 1 NEL ,NGL ,NUPARAM ,NUVAR ,NFUNC ,
33 2 UPARAM ,UVAR ,IFUNC ,TIME ,TIMESTEP ,
34 3 NPF ,TF ,DEPS1 ,DEPS2 ,EPS1 ,
35 4 EPS2 ,SIG1 ,SIG2 ,DFMAX ,TDEL ,
36 5 IPG ,ILAY ,IPT ,OFF ,FOFF )
42#include "implicit_f.inc"
82 INTEGER,
INTENT(IN) :: NEL,NUPARAM,NUVAR,IPG,ILAY,IPT
83 INTEGER ,
DIMENSION(NEL),
INTENT(IN) :: NGL
84 my_real,
INTENT(IN) :: TIME,TIMESTEP
85 my_real ,
DIMENSION(NUPARAM),
INTENT(IN) :: UPARAM
86 ,
DIMENSION(NEL),
INTENT(IN) :: DEPS1,DEPS2,EPS1,EPS2,OFF
90 INTEGER ,
DIMENSION(NEL),
INTENT(INOUT) :: FOFF
91 my_real ,
DIMENSION(NEL),
INTENT(INOUT) :: dfmax,sig1,sig2
92 my_real ,
DIMENSION(NEL),
INTENT(OUT) :: tdel
93 my_real,
DIMENSION(NEL,NUVAR)INTENT(INOUT) :: uvar
97 INTEGER NPF(*), NFUNC, (NFUNC)
103 INTEGER :: I,J,NINDX1,NINDX2,NDIR
104 my_real :: xfac,rf1,rr1,rf2,rr2,dydx,epsr1,epsr2,epsf1,epsf2,dmg1,dmg2
105 INTEGER ,
DIMENSION(NEL) :: INDX1,INDX2
106 my_real ,
DIMENSION(NEL) :: RFAC1,RFAC2,EPSP1,EPSP2
118 ndir = nint(uparam(6))
122 IF (ifunc(1) > 0)
THEN
124 epsp1(i) = xfac * deps1(i) /
max(timestep,em20)
125 epsp2(i) = xfac * deps2(i) /
max(timestep,em20)
126 rfac1(i) = finter(ifunc(1),epsp1(i),npf,tf,dydx)
127 rfac1(i) =
max(rfac1(i),em20)
128 rfac2(i) = finter(ifunc(1),epsp2(i),npf,tf,dydx)
129 rfac2(i) =
max(rfac2(i),em20)
143 IF (eps1(i) > rf1) dmg1 =
min(one, (eps1(i)-rf1)/(rr1-rf1))
144 IF (eps2(i) > rf2) dmg2 =
min(one, (eps2(i)-rf2)/(rr2-rf2))
146 IF (uvar(i,1) == zero .and. dmg1 > zero)
THEN
150 IF (uvar(i,2) == zero .and. dmg2 > zero)
THEN
154 uvar(i,1) =
max(uvar(i,1), dmg1)
155 uvar(i,2) =
max(uvar(i,2), dmg2)
156 IF (uvar(i,1)>zero .and. sig1(i)>zero) sig1(i) = sig1(i)*(one-uvar(i,1))
157 IF (uvar(i,2)>zero .and. sig2(i)>zero) sig2(i) = sig2(i)*(one-uvar(i,2))
159 IF (uvar(i,1) == one .AND. uvar(i,2) == one)
THEN
164 IF (uvar(i,1) == one .OR. uvar(i,2) == one)
THEN
173 dfmax(i) =
max(dfmax(i), uvar(i,1))
174 dfmax(i) =
max(dfmax(i), uvar(i,2))
181 IF (uvar(i,1) > zero)
THEN
183 WRITE(iout, 1100) ngl(i),ipg,ilay,ipt,time
184 WRITE(istdo,1100) ngl(i),ipg,ilay,ipt,time
185#include "lockoff.inc"
190 IF (uvar(i,2) > zero)
THEN
192 WRITE(iout, 2100) ngl(i),ipg,ilay,ipt,time
193 WRITE(istdo,2200) ngl(i),ipg,ilay,ipt,time
194#include "lockoff.inc"
198 1100
FORMAT(1x,
'START DAMAGE (FABRIC) OF FIBER 1, ELEMENT ',i10,1x,
',GAUSS PT',
199 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3,1x,
'AT TIME :',1pe12.4)
200 1200
FORMAT(1x,
'START DAMAGE (FABRIC) OF FIBER 2, ELEMENT '',GAUSS PT',
201 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3,1x,
'AT TIME :',1pe12.4)
202 2100
FORMAT(1x,
'START DAMAGE (FABRIC) OF FIBER 1, ELEMENT ',i10,1x,
',GAUSS PT',
203 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3,1x,
'AT TIME :',1pe12.4)
204 2200
FORMAT(1x,
'START DAMAGE (FABRIC) OF FIBER 2, ELEMENT ',i10,1x,
',GAUSS PT',
205 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3,1x,
'AT TIME :',1pe12.4)
206 3000
FORMAT(1x,
'FAILURE (FABRIC) OF ELEMENT ',i10,1x,
',GAUSS PT',
207 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3,1x,
'AT TIME :',1pe12.4)
subroutine fail_fabric_c(nel, ngl, nuparam, nuvar, nfunc, uparam, uvar, ifunc, time, timestep, npf, tf, deps1, deps2, eps1, eps2, sig1, sig2, dfmax, tdel, ipg, ilay, ipt, off, foff)