38 . FAIL ,FAIL_ID ,IRUPT ,LSUBMODEL,UNITAB ,
54#include "implicit_f.inc"
62 INTEGER ,
INTENT(IN) :: FAIL_ID
63 INTEGER ,
INTENT(IN) :: IRUPT
66 TYPE(fail_param_) ,
INTENT(INOUT) :: FAIL
67 TYPE(
fail_tag_) ,
INTENT(INOUT) :: FAIL_TAG
71 INTEGER :: IDAM,ISOLID,FT1,FT2,FT12,FC1,FC2,FC12,STRDEF
72 INTEGER ,
PARAMETER :: NFUNC = 13
73 INTEGER ,
DIMENSION(NFUNC) :: IFUNC
74 my_real :: epspref,et1,et2,et12,ec1,ec2,ec12,et3,ec3,ec23,et23,ec31,et31,
75 . et1m,et2m,et12m,ec1m,ec2m,ec12m,et3m,ec3m,ec23m,et23m,ec31m,et31m,
76 . fac_m,fac_l,fac_t,fac_e,
alpha,fscale_siz,ref_siz,pthkf,
77 . epspref_unit,fscal_unit,ref_siz_unit,fcut
78 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
80 is_encrypted = .false.
81 is_available = .false.
89 CALL hm_get_floatv (
'Pthk' ,pthkf ,is_available,lsubmodel,unitab)
90 CALL hm_get_intv (
'Strdef' ,strdef ,is_available,lsubmodel)
92 CALL hm_get_floatv (
'Epsilon_Dot_ref',epspref ,is_available,lsubmodel,unitab)
93 CALL hm_get_floatv (
'Fcut' ,fcut ,is_available,lsubmodel,unitab)
94 CALL hm_get_intv (
'fct_IDel' ,ifunc(13) ,is_available,lsubmodel)
95 CALL hm_get_floatv (
'Fscale_el' ,fscale_siz ,is_available,lsubmodel,unitab)
96 CALL hm_get_floatv (
'EI_ref' ,ref_siz ,is_available,lsubmodel,unitab)
98 CALL hm_get_floatv (
'Epsilon_11tf' ,et1 ,is_available,lsubmodel,unitab)
99 CALL hm_get_floatv (
'Epsilon_11tm' ,et1m ,is_available,lsubmodel,unitab)
100 CALL hm_get_intv (
'Fct_ID_11t' ,ifunc(1) ,is_available,lsubmodel)
101 CALL hm_get_floatv (
'Epsilon_11cf' ,ec1 ,is_available,lsubmodel,unitab)
102 CALL hm_get_floatv (
'Epsilon_11cm' ,ec1m ,is_available,lsubmodel,unitab)
103 CALL hm_get_intv (
'Fct_ID_11c' ,ifunc(4) ,is_available,lsubmodel)
105 CALL hm_get_floatv (
'Epsilon_22tf' ,et2 ,is_available,lsubmodel,unitab)
106 CALL hm_get_floatv (
'Epsilon_22tm' ,et2m ,is_available,lsubmodel,unitab)
107 CALL hm_get_intv (
'Fct_ID_22t' ,ifunc(2) ,is_available,lsubmodel)
108 CALL hm_get_floatv (
'Epsilon_22cf' ,ec2 ,is_available,lsubmodel,unitab)
109 CALL hm_get_floatv (
'Epsilon_22cm' ,ec2m ,is_available,lsubmodel,unitab)
110 CALL hm_get_intv (
'Fct_ID_22c' ,ifunc(5) ,is_available,lsubmodel)
112 CALL hm_get_floatv (
'Epsilon_33tf' ,et3 ,is_available,lsubmodel,unitab)
113 CALL hm_get_floatv (
'Epsilon_33tm' ,et3m ,is_available,lsubmodel,unitab)
114 CALL hm_get_intv (
'Fct_ID_33t' ,ifunc(7) ,is_available,lsubmodel)
115 CALL hm_get_floatv (
'Epsilon_33cf' ,ec3 ,is_available,lsubmodel,unitab)
116 CALL hm_get_floatv (
'Epsilon_33cm' ,ec3m ,is_available,lsubmodel,unitab)
117 CALL hm_get_intv (
'Fct_ID_33c' ,ifunc(8) ,is_available,lsubmodel)
119 CALL hm_get_floatv (
'Epsilon_12tf' ,et12 ,is_available,lsubmodel,unitab)
120 CALL hm_get_floatv (
'Epsilon_12tm' ,et12m ,is_available,lsubmodel,unitab)
121 CALL hm_get_intv (
'Fct_ID_12t' ,ifunc(3) ,is_available,lsubmodel)
122 CALL hm_get_floatv (
'Epsilon_12cf' ,ec12 ,is_available,lsubmodel,unitab)
123 CALL hm_get_floatv (
'Epsilon_12cm' ,ec12m ,is_available,lsubmodel,unitab)
124 CALL hm_get_intv (
'Fct_ID_12c' ,ifunc(6) ,is_available,lsubmodel)
126 CALL hm_get_floatv (
'Epsilon_23tf' ,et23 ,is_available,lsubmodel,unitab)
127 CALL hm_get_floatv (
'Epsilon_23tm' ,et23m ,is_available,lsubmodel,unitab)
128 CALL hm_get_intv (
'Fct_ID_23t' ,ifunc(9) ,is_available,lsubmodel)
129 CALL hm_get_floatv (
'Epsilon_23cf' ,ec23 ,is_available,lsubmodel,unitab)
130 CALL hm_get_floatv (
'Epsilon_23cm' ,ec23m ,is_available,lsubmodel,unitab)
131 CALL hm_get_intv (
'Fct_ID_23c' ,ifunc(10) ,is_available,lsubmodel)
133 CALL hm_get_floatv (
'Epsilon_31tf' ,et31 ,is_available,lsubmodel,unitab)
134 CALL hm_get_floatv (
'Epsilon_31tm' ,et31m ,is_available,lsubmodel,unitab)
135 CALL hm_get_intv (
'Fct_ID_31t' ,ifunc(11) ,is_available,lsubmodel)
136 CALL hm_get_floatv (
'Epsilon_31cf' ,ec31 ,is_available,lsubmodel
137 CALL hm_get_floatv (
'Epsilon_31cm' ,ec31m ,is_available,lsubmodel,unitab)
138 CALL hm_get_intv (
'Fct_ID_31c' ,ifunc(12) ,is_available,lsubmodel)
141 CALL hm_get_floatv_dim(
'Epsilon_Dot_ref' ,epspref_unit ,is_available,lsubmodel,unitab
142 IF (epspref == zero) epspref = one*epspref_unit
145 IF (fscale_siz == zero) fscale_siz = one*fscal_unit
148 IF (ref_siz == zero) ref_siz = one *ref_siz_unit
152 IF (et1 == zero) et1 = infinity
153 IF (et2 == zero) et2 = infinity
156 IF (et23 == zero) et23 = infinity
157 IF (et31 == zero) et31 = infinity
158 IF (ec1 == zero) ec1 = et1
159 IF (ec2 == zero) ec2 = et2
160 IF (ec3 == zero) ec3 = et3
161 IF (ec12 == zero) ec12 = et12
163 IF (ec31 == zero) ec31 = et31
165 IF (et1m == zero) et1m = 1.2*et1
166 IF (et2m == zero) et2m = 1.2*et2
167 IF (et3m == zero) et3m = 1.2*et3
168 IF (ec1m == zero) ec1m = 1.2*ec1
169 IF (ec2m == zero) ec2m = 1.2*ec2
170 IF (ec3m == zero) ec3m = 1.2*ec3
171 IF (et12m == zero) et12m = 1.2*et12
172 IF (et23m == zero) et23m = 1.2*et23
173 IF (et31m == zero) et31m = 1.2*et31
174 IF (ec12m == zero) ec12m = 1.2*ec12
175 IF (ec23m == zero) ec23m = 1.2*ec23
176 IF (ec31m == zero) ec31m = 1.2*ec31
178 IF (pthkf == zero) pthkf = one-em06
179 pthkf =
min(pthkf, one
180 pthkf =
max(pthkf,-one)
181 IF (fcut == zero) fcut = 10000.0d0*unitab%FAC_T_WORK
185 IF (strdef == 0) strdef = 1
186 IF (idam == 0) idam = 1
189 fail%KEYWORD =
'ORTHSTRAIN'
191 fail%FAIL_ID = fail_id
200 ALLOCATE (fail%UPARAM(fail%NUPARAM))
201 ALLOCATE (fail%IPARAM(fail%NIPARAM))
202 ALLOCATE (fail%IFUNC (fail%NFUNC))
203 ALLOCATE (fail%TABLE (fail%NTABLE))
204 ALLOCATE (fail%MODE (fail%NMOD))
207 fail_tag%LF_DAMMX = fail_tag%LF_DAMMX + fail%NMOD
208 fail%MODE(1) =
"Failure tensile XX"
209 fail%MODE(2) =
"Failure tensile YY"
210 fail%MODE(3) =
"Failure positive shear XY"
211 fail%MODE(4) =
"Failure compression XX"
212 fail%MODE(5) =
"Failure compression YY"
213 fail%MODE(6) =
"Failure negative shear XY"
214 fail%MODE(7) =
"Failure tensile ZZ"
215 fail%MODE(8) =
"Failure compression ZZ"
216 fail%MODE(9) =
"Failure positive shear YZ"
217 fail%MODE(10) =
"Failure negative shear YZ"
218 fail%MODE(11) =
"Failure positive shear ZX"
219 fail%MODE(12) =
"Failure negative shear ZX"
221 fail%IFUNC(1:nfunc) = ifunc(1:nfunc)
223 fail%UPARAM(1) = idam
225 fail%UPARAM(3) = isolid
227 fail%UPARAM(5) = et1m
229 fail%UPARAM(7) = et2m
231 fail%UPARAM(9) = ec1m
232 fail%UPARAM(10) = ec2
233 fail%UPARAM(11) = ec2m
234 fail%UPARAM(12) = et12
235 fail%UPARAM(13) = et12m
236 fail%UPARAM(14) = ec12
237 fail%UPARAM(15) = ec12m
238 fail%UPARAM(16) = fcut
239 fail%UPARAM(17) = epspref
240 fail%UPARAM(18) = et3
241 fail%UPARAM(19) = et3m
242 fail%UPARAM(20) = ec3
243 fail%UPARAM(21) = ec3m
244 fail%UPARAM(22) = et23
245 fail%UPARAM(23) = et23m
246 fail%UPARAM(24) = ec23
247 fail%UPARAM(25) = ec23m
248 fail%UPARAM(22) = et31
249 fail%UPARAM(23) = et31m
250 fail%UPARAM(24) = ec31
251 fail%UPARAM(25) = ec31m
252 fail%UPARAM(26) = fscale_siz
253 fail%UPARAM(27) = ref_siz
254 fail%UPARAM(28) = strdef
256 IF (is_encrypted)
THEN
259 WRITE(iout, 1000) fail_id,pthkf,strdef,epspref,fcut,
260 . ifunc(13),fscale_siz,ref_siz,
261 . et1,et1m,ifunc(1) ,ec1,ec1m,ifunc(4),
262 . et2,et2m,ifunc(2) ,ec2,ec2m,ifunc(5),
263 . et3,et3m,ifunc(7) ,ec3,ec3m,ifunc(8),
264 . et12,et12m,ifunc(3) ,ec12,ec12m,ifunc(6),
265 . et23,et23m,ifunc(9) ,ec23,ec23m,ifunc(10),
266 . et31,et31m,ifunc(11),ec31,ec31m,ifunc(12)
270 & 5x,
'STRAIN RATE DEPENDANT ORTHOTROPIC FAILURE MODEL '/,
271 & 5x,
'----------------------------------------------- '/,
272 & 5x,
'FAILURE MODEL ID . . . . . . . . . . . . . . . . .=',i10/,
273 & 5x,
'SHELL ELEMENT DELETION PARAMETER PTHICKFAIL. . . .=',1pg20.13,/,
274 & 5x,
' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
275 & 5x,
' < 0.0 : FRACTION OF FAILED INTG. POINTS OR LAYERS',/,
276 & 5x,
'FAILURE STRAIN INPUT TYPE (STRDEF) . . . . . . . .=',i10/
277 & 5x,
' =1 (STRAIN MEASURE DEFINED IN PROPERTY) ',/
278 & 5x,
' =2 (ENGINEERING STRAIN) . . . . . . . . ',/
279 & 5x,
' =3 (TRUE STRAIN). . . . . . . . . . . . ',/
280 & 5x,
'REFERENCE STRAIN RATE. . . . . . . . . . . . . . .=',1pg20.13,/,
281 & 5x,
'STRAIN RATE FILTERING FREQUENCY . . . . . . . . .=',1pg20.13,/,
282 & 5x,
'ELEMENT SIZE FACTOR FUNCTION . . . . . . . . . . .=',i10/,
283 & 5x,
'SCALE FACTOR OF ELEMENT SIZE FUNCTION. . . . . . .=',1pg20.13,/,
284 & 5x,
'REFERENCE ELEMENT SIZE . . . . . . . . . . . . . .=',1pg20.13,/,
285 & 5x,
'FAILURE STRAIN TENSION 1 . . . . . . . . . . . . .=',1pg20.13,/,
286 & 5x,
'MAXIMUM STRAIN TENSION 1 . . . . . . . . . . . . .=',1pg20.13,/,
287 & 5x,
'STRAIN RATE FUNCTION TENSION 1 . . . . . . . . . .=',i10/,
288 & 5x,
'FAILURE STRAIN COMPRESSION 1 . . . . . . . . . . .=',1pg20.13,/,
289 & 5x,
'MAXIMUM STRAIN COMPRESSION 1 . . . . . . . . . . .=',1pg20.13,/,
290 & 5x,
'STRAIN RATE FUNCTION COMPRESSION 1 . . . . . . . .=',i10/,
291 & 5x,
'FAILURE STRAIN TENSION 2 . . . . . . . . . . . . .=',1pg20.13,/,
292 & 5x,
'MAXIMUM STRAIN TENSION 2 . . . . . . . . . . . . .=',1pg20.13,/,
293 & 5x,
'STRAIN RATE FUNCTION TENSION 2 . . . . . . . . . .=',i10/,
294 & 5x,
'FAILURE STRAIN COMPRESSION 2 . . . . . . . . . . .=',1pg20.13,/,
295 & 5x,
'MAXIMUM STRAIN COMPRESSION 2 . . . . . . . . . . .=',1pg20.13,/,
296 & 5x,
'STRAIN RATE FUNCTION COMPRESSION 2 . . . . . . . .=',i10
297 & 5x,
'FAILURE STRAIN TENSION 3 . . . . . . . . . . . . .=',1pg20.13,/,
298 & 5x,
'MAXIMUM STRAIN TENSION 3 . . . . . . . . . . . . .=',1pg20.13,/,
299 & 5x,
'STRAIN RATE FUNCTION TENSION 3 . . . . . . . . . .=',i10/,
300 & 5x,
'FAILURE STRAIN COMPRESSION 3 . . . . . . . . . . .=',1pg20.13,/,
301 & 5x,
'MAXIMUM STRAIN COMPRESSION 3 . . . . . . . . . . .=',1pg20.13,/,
302 & 5x,
'STRAIN RATE FUNCTION COMPRESSION 3 . . . . . . . .=',i10/,
303 & 5x,
'FAILURE STRAIN SHEAR TENSION 12. . . . . . . . . .=',1pg20.13,/,
304 & 5x,
'MAXIMUM STRAIN SHEAR TENSION 12. . . . . . . . . .=',1pg20.13,/,
305 & 5x,
'STRAIN RATE FUNCTION SHEAR TENSION 12. . . . . . .=',i10/,
306 & 5x,
'FAILURE STRAIN SHEAR COMPRESSION 12. . . . . . . .=',1pg20.13,/,
307 & 5x,
'MAXIMUM STRAIN SHEAR COMPRESSION 12. . . . . . . .=',1pg20.13,/,
308 & 5x,
'STRAIN RATE FUNCTION SHEAR COMPRESSION 12. . . . .=',i10/,
309 & 5x,
'FAILURE STRAIN SHEAR TENSION 23. . . . . . . . . .=',1pg20.13,/,
310 & 5x,
'MAXIMUM STRAIN SHEAR TENSION 23. . . . . . . . . .=',1pg20.13,/,
311 & 5x,
'STRAIN RATE FUNCTION SHEAR TENSION 23. . . . . . .=',i10/,
312 & 5x,
'FAILURE STRAIN SHEAR COMPRESSION 23. . . . . . . .=',1pg20.13,/,
313 & 5x,
'MAXIMUM STRAIN SHEAR COMPRESSION 23. . . . . . . .=',1pg20.13,/,
314 & 5x,
'STRAIN RATE FUNCTION SHEAR COMPRESSION 23. . . . .=',i10/,
315 & 5x,
'FAILURE STRAIN SHEAR TENSION 31. . . . . . . . . .=',1pg20.13,/,
316 & 5x,
'MAXIMUM STRAIN SHEAR TENSION 31. . . . . . . . . .=',1pg20.13,/,
317 & 5x,
'STRAIN RATE FUNCTION SHEAR TENSION 31. . . . . . .=',i10/,
318 & 5x,
'FAILURE STRAIN SHEAR COMPRESSION 31. . . . . . . .=',1pg20.13,/,
319 'MAXIMUM STRAIN SHEAR COMPRESSION 31. . . . . . . .=',1pg20.
320 & 5x,
'STRAIN RATE FUNCTION SHEAR COMPRESSION 31. . . . .=',i10/,
321 & 5x,
' ----------------------------------- ')