55
56
57
58 USE mat_elem_mod
59 USE elbufdef_mod
60 USE fail_visual_b_mod
61 USE fail_gene1_b_mod
62 USE fail_inievo_b_mod
63 USE fail_tab2_b_mod
64
65
66
67#include "implicit_f.inc"
68
69
70
71#include "comlock.inc"
72
73
74
75 INTEGER ,INTENT(IN) :: NEL
76 INTEGER ,INTENT(IN) :: IMAT
77 INTEGER ,INTENT(IN) :: JTHE
78 INTEGER ,INTENT(IN) :: NUMMAT
79 INTEGER ,INTENT(IN) :: NPROPM
80 INTEGER ,INTENT(IN) :: SNPC
81 INTEGER ,INTENT(IN) :: STF
82 INTEGER ,INTENT(IN) :: IOUT
83 INTEGER ,INTENT(IN) :: ISTDO
84 INTEGER ,INTENT(IN) :: ISMSTR
85 INTEGER ,DIMENSION(SNPC) ,INTENT(IN) :: NPF
86 INTEGER ,DIMENSION(NEL) ,INTENT(IN) :: NGL
89 my_real ,
DIMENSION(NPROPM ,NUMMAT) ,
INTENT(IN) :: pm
90 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: dpla
91 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: al
92 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: svm
93 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: pressure
94 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: epsd
95 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: epsxx,epsxy,epsxz
96 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: kxx,kyy,kzz
97 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: tempel
98 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: f1,f2,f3
99 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: m1,m2,m3
100
101 my_real ,
DIMENSION(STF) ,
INTENT(IN) :: tf
102 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: off
103 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: pla
105 INTEGER ,INTENT(IN) :: NTABLE
106 TYPE(TTABLE), DIMENSION(NTABLE), INTENT(INOUT) :: TABLE
107 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: sigy
108
109 TYPE (ELBUF_STRUCT_), INTENT(INOUT) :: ELBUF_STR
110 TYPE (FAIL_PARAM_) ,INTENT(IN) :: FAIL
111
112
113
114 INTEGER :: IFUNC(100)
115 INTEGER :: I,IFL,NFUNC,NPARAM,IRUPT
117 my_real ,
DIMENSION(NEL) :: tstar
119
120 my_real,
DIMENSION(:) ,
POINTER :: uparamf
121
122
123
124
125 ifl = 1
126
127 nparam = fail%NUPARAM
128 nfunc = fail%NFUNC
129
130 irupt = elbuf_str%GBUF%FAIL(1)%ILAWF
131
132
133
134 DO i = 1,nel
135
136 IF (off(i) < em01) off(i) = zero
137 IF (off(i) < one ) off(i) = off(i)*four_over_5
138 ENDDO
139
140
141 SELECT CASE (irupt)
142
143 CASE (1)
144
145 IF (jthe > 0) THEN
146 t0 = pm(79, imat)
147 tm = pm(80, imat)
148 DO i=1,nel
149 tstar(i) =
max(zero,(tempel(i)-t0)/(tm-t0))
150 ENDDO
151 ELSE
152 tstar(1:nel) = zero
153 ENDIF
155 . time ,tstar ,svm ,pressure ,
156 . dpla ,epsd ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX,
157 . elbuf_str%GBUF%FAIL(1)%TDEL ,iout ,istdo )
158
159 CASE (10)
160 IF (jthe > 0) THEN
161 t0 = pm(79, imat)
162 tm = pm(80, imat)
163 DO i=1,nel
164 tstar(i) =
max(zero,(tempel(i)-t0)/(tm-t0))
165 ENDDO
166 ELSE
167 tstar(1:nel) = zero
168 ENDIF
169
171 . nel ,ngl ,nparam ,fail%UPARAM,
172 . time ,epsd ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX,
173 . elbuf_str%GBUF%FAIL(1)%TDEL,iout ,istdo ,fail%IFUNC ,
174 . epsxx ,al ,tstar ,
175 . snpc ,npf ,stf ,
176 . tf ,ismstr ,elbuf_str%GBUF%FAIL(1)%NVAR, elbuf_str%GBUF%FAIL(1)%VAR,
177 . elbuf_str%GBUF%DMGSCL)
178
179
180 CASE (11)
182 . time ,epsd ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX,
183 . elbuf_str%GBUF%FAIL(1)%TDEL ,iout ,istdo ,fail%IFUNC ,
185 . m1 ,m2 ,m3 ,snpc ,npf ,stf ,
186 . tf ,epsxx ,epsxy ,epsxz ,kxx ,kyy ,
187 . kzz ,elbuf_str%GBUF%FAIL(1)%NVAR,elbuf_str%GBUF%FAIL(1)%VAR,
188 . elbuf_str%GBUF%DMGSCL)
189
190
191 CASE (30)
193 . time ,svm ,pressure ,
194 . dpla ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX,
195 . elbuf_str%GBUF%FAIL(1)%TDEL ,iout ,istdo ,fail%IFUNC ,
196 . nfunc,snpc ,npf ,stf ,tf,
197 . elbuf_str%GBUF%FAIL(1)%NVAR, elbuf_str%GBUF%FAIL(1)%VAR,al,
198 . elbuf_str%GBUF%DMGSCL)
199
200 CASE (36)
201 CALL fail_visual_b(nel ,ngl ,nparam ,fail%UPARAM,
202 . time ,elbuf_str%GBUF%FAIL(1)%DAMMX,
203 . iout ,istdo ,
205 . epsxx ,epsxy ,epsxz ,
206 . elbuf_str%GBUF%FAIL(1)%NVAR,
207 . elbuf_str%GBUF%FAIL(1)%VAR,ismstr, dtime)
208
209 CASE (39)
210 CALL fail_gene1_b(
211 . nel ,fail%NUPARAM ,elbuf_str%GBUF%FAIL(1)%NVAR ,fail%NFUNC,
212 . fail%IFUNC ,npf ,tf ,
213 . time ,dtime ,fail%UPARAM ,
214 . ngl ,elbuf_str%GBUF%DT ,epsd ,elbuf_str%GBUF%FAIL(1)%VAR ,
215 . off ,
217 . epsxx ,epsxy ,epsxz ,
218 . tempel ,
219 . elbuf_str%GBUF%FAIL(1)%DAMMX ,al ,table,
220 . fail%NTABLE,
221 . fail%TABLE ,elbuf_str%GBUF%FAIL(1)%LF_DAMMX ,fail%NIPARAM ,fail%IPARAM,
222 . snpc ,stf ,ntable)
223
224 CASE (42)
225 CALL fail_inievo_b(
226 . nel ,fail%NUPARAM ,elbuf_str%GBUF%FAIL(1)%NVAR ,
227 . table ,fail%NTABLE ,fail%TABLE ,time ,fail%UPARAM ,
228 . ngl ,al ,dpla ,epsd , elbuf_str%GBUF%FAIL(1)%VAR,
230 . pla ,sigy ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX ,
231 . elbuf_str%GBUF%FAIL(1)%TDEL ,
232 . elbuf_str%GBUF%FAIL(1)%DAMINI,
233 . ntable,elbuf_str%GBUF%DMGSCL)
234
235 CASE (41)
236 CALL fail_tab2_b(
237 . nel ,fail%NUPARAM ,elbuf_str%GBUF%FAIL(1)%NVAR ,fail%NFUNC ,fail%IFUNC ,
238 . npf ,table ,tf ,time ,fail%UPARAM ,
239 . ngl ,al ,dpla ,epsd ,elbuf_str%GBUF%FAIL(1)%VAR,
241 . tempel ,off ,elbuf_str%GBUF%FAIL(1)%DAMMX ,elbuf_str%GBUF%FAIL(1)%TDEL ,
242 . fail%NTABLE ,fail%TABLE,
243 . snpc ,stf ,ntable ,elbuf_str%GBUF%DMGSCL)
244
245 END SELECT
246
247 DO i= 1,nel
248 IF (off(i) == four_over_5) THEN
249#include "lockon.inc"
250 WRITE(iout, 1000) ngl(i),time
251 WRITE(istdo,1000) ngl(i),time
252#include "lockoff.inc"
253 END IF
254 END DO
255
256 1000 FORMAT(1x,'DELETED BEAM ELEMENT in 1',i10,1x,'AT TIME :',1pe12.4)
257
258
259 RETURN
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)
subroutine fail_energy_b(nel, ngl, nuparam, uparam, time, epsd, off, dfmax, tdel, iout, istdo, ifunc, area, f1, f2, f3, m1, m2, m3, snpc, npf, stf, tf, epsxx, epsxy, epsxz, kxx, kyy, kzz, nvar, uvar, dmgscl)
subroutine fail_johnson_b(nel, ngl, nuparam, uparam, time, tstar, svm, pressure, dpla, epsd, off, dfmax, tdel, iout, istdo)
subroutine fail_tensstrain_b(nel, ngl, nuparam, uparam, time, epsd, off, dfmax, tdel, iout, istdo, ifunc, epsxx, al, tstar, snpc, npf, stf, tf, ismstr, nuvar, uvar, dmgscl)
subroutine area(d1, x, x2, y, y2, eint, stif0)