31 . NEL ,NGL ,NUPARAM ,UPARAM ,
32 . TIME ,OFF ,DFMAX ,TDEL ,
33 . IOUT ,ISTDO ,NFUNC ,IFUNC ,DAMSCL ,
34 . UVAR ,NUVAR ,SNPC ,NPF ,
35 . STF ,TF ,IPT ,FOFF ,
36 . SIGNXX ,SIGNXY ,SIGNXZ ,DPLA ,AL , UELR,NPG)
42#include "implicit_f.inc"
50 INTEGER ,
INTENT(IN) :: NEL
51 INTEGER ,
INTENT(IN) :: NUPARAM
52 INTEGER ,
INTENT(IN) ::
53 INTEGER ,
INTENT(IN) :: IOUT
54 INTEGER ,
INTENT(IN) :: ISTDO
55 INTEGER ,
INTENT(IN) :: NFUNC
56 INTEGER ,
INTENT(IN) :: SNPC
57 INTEGER ,
INTENT(IN) :: STF
58 INTEGER ,
INTENT(IN) :: NUVAR
59 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
60 INTEGER ,
DIMENSION(100) ,
INTENT(IN) ::
61 INTEGER ,
DIMENSION(SNPC) ,
INTENT(IN) :: NPF
62 INTEGER ,
DIMENSION(NEL) ,
INTENT(INOUT) :: FOFF
64 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
65 my_real ,
DIMENSION(NEL) INTENT(IN)
66 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: al
67 my_real ,
DIMENSION(STF) ,
INTENT(IN) :: tf
68 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: off
69 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: dfmax
70 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: damscl
71 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: tdel
72 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: signxx,signxy,signxz
73 my_real ,
DIMENSION(NEL,NUVAR),
INTENT(INOUT) :: uvar
74 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: uelr
75 INTEGER ,
INTENT(IN) :: NPG
79 INTEGER :: I,J,NINDX,NINDXD,ICOUP,SEL,
80 INTEGER ,
DIMENSION(NEL) :: INDX,INDXD
81 my_real :: dcrit, exp,d1,df,triax,scale,sxx,syy,szz
83 my_real p1x,p1y,s1x,s1y,s2y, a1, b1, c1, ref_el_len, lambda,fac ,
88 my_real ,
DIMENSION(NEL) :: damage
98 sel = int(uparam(11)+0.0001)
100 ref_el_len = uparam(13)
101 icoup = nint(uparam(14))
104 failip =
min(nint(uparam(17)),npg)
109 IF (uvar(1,3) == zero)
THEN
112 lambda = al(i) / ref_el_len
113 fac = finter(ifunc(1),lambda,npf,tf,df)
117 ELSEIF (nuvar == 9)
THEN
118 IF (uvar(1,9) == zero)
THEN
121 lambda = uvar(i,9) / ref_el_len
122 fac = finter(ifunc(1),lambda,npf,tf,df)
135 IF (off(i) == one .AND. foff(i) == 1 .AND. dpla(i) /= zero)
THEN
139 svm = sqrt(three*(half*signxx(i)**2 + signxy(i)**2 + signxz(i)**2))
141 triaxs = p/
max(em20,svm)
142 IF (triaxs < -two_third) triaxs
143 IF (triaxs > two_third) triaxs = two_third
148 eps_fail = x_1(1) + x_1(2)*triaxs + x_1(3)*triaxs**2
149 IF ((nuvar == 3).AND.(nfunc > 0)) eps_fail = eps_fail* uvar(i,3)
154 eps_fail = x_2(1) + x_2(2)*triaxs + x_2(3)*triaxs**2
155 IF ((nuvar == 3).AND.(nfunc > 0)) eps_fail = eps_fail*uvar(i,3)
156 ! plain strain is global minimum
157 ELSEIF (sel == 2)
THEN
158 IF (triaxs <= one/sqr3)
THEN
160 p1y = x_1(1) + x_1(2)*p1x + x_1(3)*p1x**2
162 s1y = x_2(1) + x_2(2)/sqr3 + x_2(3)*(one/sqr3)**2
163 a1 = (p1y - s1y)/(p1x - s1x)**2
166 eps_fail = c1 + b1*triaxs + a1*triaxs**2
167 IF ((nuvar == 3).AND.(nfunc > 0)) eps_fail = eps_fail*uvar(i,3)
170 p1y = x_2(1) + x_2(2)*p1x + x_2(3)*p1x**2
172 s1y = x_2(1) + x_2(2)/sqr3 + x_2(3)*(one/sqr3)**2
173 a1 = (p1y - s1y)/(p1x - s1x)**2
176 eps_fail = c1 + b1*triaxs + a1*triaxs**2
177 IF ((nuvar == 3).AND.(nfunc> 0)) eps_fail = eps_fail*uvar(i,3)
183 dfmax(i) = dfmax(i) + dpla(i)/
max(eps_fail,em6)
184 dfmax(i) =
min(one,dfmax(i))
186 IF (dfmax(i) >= one )
THEN
193 uelr(i) = uelr(i) + one
194 IF (nint(uelr(i)) >= failip)
then
205 IF (dfmax(i) >= dcrit .AND.off(i) == one .AND. foff(i) == 1)
THEN
206 IF (dcrit < one)
THEN
207 damscl(i) = one - ((dfmax(i)-dcrit)/
max(one-dcrit,em20))**exp
217 damscl(i) = one - dfmax(i)
227 WRITE(iout, 1000) ngl(i),ipt,time
228 WRITE(istdo,1000) ngl(i),ipt,time
229#include "lockoff.inc"
230 IF (off(i) == four_over_5)
THEN
231 WRITE(iout, 1111)ngl(i),time
232 WRITE(istdo,1111)ngl(i),time
237 1000
FORMAT(5x,
'FAILURE (BIQUAD) OF BEAM ELEMENT ',i10,1x,
',INTEGRATION PT',i5
238 . ,2x,
'AT TIME :',1pe12.4,1x )
239 2000
FORMAT(5x,'start damage(biquad) of beam element
',I10,1X,',integration pt
',I5
240 . ,2X,'at time :
',1PE12.4 )
241 1111 FORMAT(1X,'deleted beam element
',I10,1X,'at time :
',1PE12.4)
subroutine fail_biquad_ib(nel, ngl, nuparam, uparam, time, off, dfmax, tdel, iout, istdo, nfunc, ifunc, damscl, uvar, nuvar, snpc, npf, stf, tf, ipt, foff, signxx, signxy, signxz, dpla, al, uelr, npg)