31 . NEL ,NGL ,NUPARAM ,UPARAM ,
32 . TIME ,SVM ,PRESSURE ,
34 . TDEL ,IOUT ,ISTDO ,IFUNC ,NFUNC,
35 . SNPC ,NPF , STF , TF ,
43#include "implicit_f.inc"
51 INTEGER ,
INTENT(IN) :: NEL
52 INTEGER ,
INTENT(IN) :: NUPARAM
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 ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
59 INTEGER ,
DIMENSION(100) ,
INTENT(IN) :: IFUNC
60 INTEGER ,
DIMENSION(SNPC) ,
INTENT(IN) :: NPF
61 INTEGER ,
INTENT(IN) :: NUVAR
62 my_real ,
DIMENSION(STF) ,
INTENT(IN) :: tf
64 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: al
65 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
66 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: dpla
67 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: svm
68 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: pressure
70 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: off
71 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: dfmax
72 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: tdel
73 my_real ,
DIMENSION(NEL,NUVAR),
INTENT(INOUT) :: uvar
74 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: dmgscl
78 INTEGER I,J,IDEL,IDEV,IFLAG(NEL),INDX(NEL),IADBUF,NINDX,
79 . index(nel),ir,ifail,jj,matid,sel,icoup
81 . d1,df,triax,scale,sxx,syy,szz
84 my_real p1x,p1y,s1x,s1y,s2y, a1, b1, c1, ref_el_len, lambda,fac,dcrit,exp
89 eps_fail = -huge(eps_fail)
97 sel = int(uparam(11)+0.0001)
99 ref_el_len = uparam(13)
100 icoup = nint(uparam(14))
109 IF (uvar(1,3)==zero)
THEN
112 lambda = uvar(i,3) / 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)
133 IF (off(i) == one .AND. dpla(i) > zero)
THEN
134 triax = pressure(i) /
max(em20, svm(i))
135 IF (triax<-two_third) triax = -two_third
136 IF (triax>two_third) triax = two_third
137 IF (triax <= third)
THEN
138 eps_fail = x_1(1) + x_1(2) * triax + x_1(3) * triax**2
139 IF ((nuvar == 3).AND.(nfunc > 0)) eps_fail = eps_fail* uvar(i,3)
140 IF ((nuvar == 9).AND.(nfunc > 0)) eps_fail = eps_fail* uvar(i,9)
144 eps_fail = x_2(1) + x_2(2) * triax + x_2(3) * triax**2
145 IF ((nuvar == 3).AND.(nfunc > 0))eps_fail = eps_fail * uvar(i,3)
146 IF ((nuvar == 9).AND.(nfunc > 0))eps_fail = eps_fail * uvar(i,9)
148 IF (triax <= one/sqr3)
THEN
150 p1y = x_1(1) + x_1(2) * p1x + x_1(3) * p1x**2
152 s1y = x_2(1) + x_2(2) / sqr3 + x_2(3) * (one/sqr3)**2
153 a1 = (p1y - s1y) / (p1x - s1x)**2
155 c1 = a1 * s1x**2 + s1y
156 eps_fail = c1 + b1 * triax + a1 * triax**2
157 IF ((nuvar == 3).AND.(nfunc > 0))eps_fail = eps_fail * uvar(i,3)
158 IF ((nuvar == 9).AND.(nfunc > 0))eps_fail = eps_fail * uvar(i,9)
161 p1y = x_2(1) + x_2(2) * p1x + x_2(3) * p1x**2
163 s1y = x_2(1) + x_2(2) / sqr3 + x_2(3) * (one/sqr3)**2
164 a1 = (p1y - s1y) / (p1x - s1x)**2
166 c1 = a1 * s1x**2 + s1y
167 eps_fail = c1 + b1 * triax + a1 * triax**2
169 IF ((nuvar == 3).AND.(nfunc> 0)) eps_fail = eps_fail * uvar(i,3)
170 IF ((nuvar == 9).AND.(nfunc> 0)) eps_fail
175 dfmax(i) = dfmax(i) + dpla(i)/
max(eps_fail,em6)
178 IF (dfmax(i) >= one)
THEN
192 IF (dfmax(i) >= dcrit)
THEN
193 IF (dcrit < one)
THEN
194 dmgscl(i) = one - ((dfmax(i)-dcrit)/
max(one-dcrit,em20))**exp
208 WRITE(iout, 1000) ngl(i),time
209 WRITE(istdo,1000) ngl(i),time
210#include "lockoff.inc"
214 1000
FORMAT(5x,
'FAILURE (BIQUAD) OF BEAM ELEMENT ',i10,1x,
'AT TIME :',1pe12.4)
subroutine fail_biquad_b(nel, ngl, nuparam, uparam, time, svm, pressure, dpla, off, dfmax, tdel, iout, istdo, ifunc, nfunc, snpc, npf, stf, tf, nuvar, uvar, al, dmgscl)