37 . FAIL ,FAIL_ID ,IRUPT ,LSUBMODEL,UNITAB )
52#include
"implicit_f.inc"
60 INTEGER ,
INTENT(IN) :: FAIL_ID
61 INTEGER ,
INTENT(IN) :: IRUPT
62 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
63 TYPE (SUBMODEL_DATA),
INTENT(IN) :: (*)
64 TYPE (FAIL_PARAM_) ,
INTENT(INOUT) :: FAIL
68 INTEGER FAILIP,ISHAP11T,ISHAP11C,ISHAP22T,ISHAP22C,ISHAP33T,ISHAP33C,
69 . ishap12t,ishap12c,ishap23t,ishap23c,ishap31t,ishap31c,nmod
71 . pthickfail,sigma_11t,g_11t,sigma_11c,g_11c,sigma_22t,g_22t,
72 . sigma_22c,g_22c,sigma_33t,g_33t,sigma_33c,g_33c,sigma_12t,g_12t,
73 . sigma_12c,g_12c,sigma_23t,g_23t,sigma_23c,g_23c,sigma_31t,g_31t,
75 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
77 is_encrypted = .false.
78 is_available = .false.
87 CALL hm_get_floatv (
'PTHICKFAIL',pthickfail ,is_available,lsubmodel,unitab)
88 CALL hm_get_intv (
'NMOD' ,nmod ,is_available,lsubmodel)
89 CALL hm_get_intv (
'FAILIP' ,failip ,is_available,lsubmodel)
92 CALL hm_get_floatv (
'SIGMA_11T' ,sigma_11t ,is_available,lsubmodel,unitab)
93 CALL hm_get_floatv (
'G_11T' ,g_11t ,is_available,lsubmodel,unitab)
94 CALL hm_get_intv (
'ISHAP11T' ,ishap11t ,is_available,lsubmodel)
95 CALL hm_get_floatv (
'SIGMA_11C' ,sigma_11c ,is_available,lsubmodel,unitab)
96 CALL hm_get_floatv (
'G_11C' ,g_11c ,is_available,lsubmodel,unitab)
97 CALL hm_get_intv (
'ISHAP11C' ,ishap11c ,is_available,lsubmodel)
100 CALL hm_get_floatv (
'SIGMA_22T' ,sigma_22t ,is_available,lsubmodel,unitab)
101 CALL hm_get_floatv (
'G_22T' ,g_22t ,is_available,lsubmodel,unitab)
102 CALL hm_get_intv (
'ISHAP22T' ,ishap22t ,is_available,lsubmodel)
103 CALL hm_get_floatv (
'SIGMA_22C' ,sigma_22c ,is_available,lsubmodel,unitab)
104 CALL hm_get_floatv (
'G_22C' ,g_22c ,is_available,lsubmodel,unitab)
105 CALL hm_get_intv (
'ISHAP22C' ,ishap22c ,is_available,lsubmodel)
108 CALL hm_get_floatv (
'SIGMA_33T' ,sigma_33t ,is_available,lsubmodel,unitab)
109 CALL hm_get_floatv (
'G_33T' ,g_33t ,is_available,lsubmodel,unitab)
110 CALL hm_get_intv (
'ISHAP33T' ,ishap33t ,is_available,lsubmodel)
111 CALL hm_get_floatv ('sigma_33c
' ,SIGMA_33C ,IS_AVAILABLE,LSUBMODEL,UNITAB)
112 CALL HM_GET_FLOATV ('g_33c
' ,G_33C ,IS_AVAILABLE,LSUBMODEL,UNITAB)
113 CALL HM_GET_INTV ('ishap33c
' ,ISHAP33C ,IS_AVAILABLE,LSUBMODEL)
115 ! 5th card: shear in plane 12 failure parameters
116 CALL HM_GET_FLOATV ('sigma_12t
' ,SIGMA_12T ,IS_AVAILABLE,LSUBMODEL,UNITAB)
117 CALL HM_GET_FLOATV ('g_12t
' ,G_12T ,IS_AVAILABLE,LSUBMODEL,UNITAB)
118 CALL HM_GET_INTV ('ishap12t
' ,ISHAP12T ,IS_AVAILABLE,LSUBMODEL)
119 CALL HM_GET_FLOATV ('sigma_12c
' ,SIGMA_12C ,IS_AVAILABLE,LSUBMODEL,UNITAB)
120 CALL HM_GET_FLOATV ('g_12c
' ,G_12C ,IS_AVAILABLE,LSUBMODEL,UNITAB)
121 CALL HM_GET_INTV ('ishap12c
' ,ISHAP12C ,IS_AVAILABLE,LSUBMODEL)
123 ! 6th card: shear in plane 23 failure parameters
124 CALL HM_GET_FLOATV ('sigma_23t
' ,SIGMA_23T ,IS_AVAILABLE,LSUBMODEL,UNITAB)
125 CALL HM_GET_FLOATV ('g_23t
' ,G_23T ,IS_AVAILABLE,LSUBMODEL,UNITAB)
126 CALL HM_GET_INTV ('ishap23t
' ,ISHAP23T ,IS_AVAILABLE,LSUBMODEL)
127 CALL HM_GET_FLOATV ('sigma_23c
' ,SIGMA_23C ,IS_AVAILABLE,LSUBMODEL,UNITAB)
128 CALL HM_GET_FLOATV ('g_23c' ,g_23c ,is_available,lsubmodel,unitab)
129 CALL hm_get_intv (
'ISHAP23C' ,ishap23c ,is_available,lsubmodel)
132 CALL hm_get_floatv (
'SIGMA_31T' ,sigma_31t ,is_available,lsubmodel,unitab)
133 CALL hm_get_floatv (
'G_31T' ,g_31t ,is_available,lsubmodel,unitab)
134 CALL hm_get_intv (
'ISHAP31T' ,ishap31t ,is_available,lsubmodel)
135 CALL hm_get_floatv (
'SIGMA_31C' ,sigma_31c ,is_available,lsubmodel,unitab)
137 CALL hm_get_intv (
'ISHAP31C' ,ishap31c ,is_available,lsubmodel)
143 IF (pthickfail == zero) pthickfail = one-em06
144 pthickfail =
min(pthickfail, one)
145 pthickfail =
max(pthickfail,-one)
147 IF (nmod == 0) nmod = 1
150 IF (failip == 0) failip = 1
152 sigma_11t = abs(sigma_11t)
153 sigma_22t = abs(sigma_22t)
154 sigma_12t = abs(sigma_12t)
155 sigma_11c = abs(sigma_11c)
156 sigma_22c = abs(sigma_22c)
157 sigma_12c = abs(sigma_12c)
159 IF (sigma_11t == zero) sigma_11t = infinity
160 IF (sigma_22t == zero) sigma_22t = infinity
161 IF (sigma_33t == zero) sigma_33t = infinity
162 IF (sigma_12t == zero) sigma_12t = infinity
163 IF (sigma_23t == zero) sigma_23t = infinity
164 IF (sigma_31t == zero) sigma_31t = infinity
166 IF (sigma_11c == zero) sigma_11c = sigma_11t
167 IF (sigma_22c == zero) sigma_22c = sigma_22t
168 IF (sigma_33c == zero) sigma_33c = sigma_33t
169 IF (sigma_12c == zero) sigma_12c = sigma_12t
170 IF (sigma_23c == zero) sigma_23c = sigma_23t
171 IF (sigma_31c == zero) sigma_31c = sigma_31t
173 IF (g_11t == zero) g_11t = infinity
174 IF (g_22t == zero) g_22t = infinity
175 IF (g_33t == zero) g_33t = infinity
176 IF (g_12t == zero) g_12t = infinity
177 IF (g_23t == zero) g_23t = infinity
178 IF (g_31t == zero) g_31t = infinity
180 IF (g_11c == zero) g_11c = g_11t
181 IF (g_22c == zero) g_22c = g_22t
182 IF (g_33c == zero) g_33c = g_33t
183 IF (g_12c == zero) g_12c = g_12t
184 IF (g_23c == zero) g_23c = g_23t
185 IF (g_31c == zero) g_31c = g_31t
187 IF (ishap11t == zero) ishap11t = 1
188 ishap11t =
min(ishap11t,2)
189 ishap11t =
max(ishap11t,1)
190 IF (ishap11c == zero) ishap11c = 1
191 ishap11c =
min(ishap11c,2)
192 ishap11c =
max(ishap11c,1)
193 IF (ishap22t == zero) ishap22t = 1
194 ishap22t =
min(ishap22t,2)
195 ishap22t =
max(ishap22t,1)
196 IF (ishap22c == zero) ishap22c = 1
197 ishap22c =
min(ishap22c,2)
198 ishap22c =
max(ishap22c,1)
199 IF (ishap33t == zero) ishap33t = 1
200 ishap33t =
min(ishap33t,2)
201 ishap33t =
max(ishap33t,1)
202 IF (ishap33c == zero) ishap33c = 1
203 ishap33c =
min(ishap33c,2)
204 ishap33c =
max(ishap33c,1)
205 IF (ishap12t == zero) ishap12t = 1
206 ishap12t =
min(ishap12t,2)
207 ishap12t =
max(ishap12t,1)
208 IF (ishap12c == zero) ishap12c = 1
209 ishap12c =
min(ishap12c,2)
210 ishap12c =
max(ishap12c,1)
211 IF (ishap23t == zero) ishap23t = 1
212 ishap23t =
min(ishap23t,2)
213 ishap23t =
max(ishap23t,1)
214 IF (ishap23c == zero) ishap23c = 1
215 ishap23c =
min(ishap23c,2)
216 ishap23c =
max(ishap23c,1)
217 IF (ishap31t == zero) ishap31t = 1
218 ishap31t =
min(ishap31t,2)
219 ishap31t =
max(ishap31t,1)
220 IF (ishap31c == zero) ishap31c = 1
221 ishap31c =
min(ishap31c,2)
222 ishap31c =
max(ishap31c,1)
227 fail%KEYWORD =
'ORTHENERG'
229 fail%FAIL_ID = fail_id
236 fail%PTHK = pthickfail
238 ALLOCATE (fail%UPARAM(fail%NUPARAM))
239 ALLOCATE (fail%IPARAM(fail%NIPARAM))
240 ALLOCATE (fail%IFUNC (fail%NFUNC))
241 ALLOCATE (fail%TABLE (fail%NTABLE))
244 fail%UPARAM(1) = pthickfail
245 fail%UPARAM(2) = failip
246 fail%UPARAM(3) = sigma_11t
247 fail%UPARAM(4) = sigma_11c
248 fail%UPARAM(5) = sigma_22t
249 fail%UPARAM(6) = sigma_22c
250 fail%UPARAM(7) = sigma_33t
251 fail%UPARAM(8) = sigma_33c
252 fail%UPARAM(9) = sigma_12t
253 fail%UPARAM(10) = sigma_12c
254 fail%UPARAM(11) = sigma_23t
255 fail%UPARAM(12) = sigma_23c
256 fail%UPARAM(13) = sigma_31t
258 fail%UPARAM(15) = g_11t
259 fail%UPARAM(16) = g_11c
260 fail%UPARAM(17) = g_22t
261 fail%UPARAM(18) = g_22c
262 fail%UPARAM(19) = g_33t
263 fail%UPARAM(20) = g_33c
264 fail%UPARAM(21) = g_12t
265 fail%UPARAM(22) = g_12c
266 fail%UPARAM(23) = g_23t
267 fail%UPARAM(24) = g_23c
268 fail%UPARAM(25) = g_31t
269 fail%UPARAM(26) = g_31c
270 fail%UPARAM(27) = ishap11t
271 fail%UPARAM(28) = ishap11c
272 fail%UPARAM(29) = ishap22t
273 fail%UPARAM(30) = ishap22c
274 fail%UPARAM(31) = ishap33t
276 fail%UPARAM(33) = ishap12t
277 fail%UPARAM(34) = ishap12c
278 fail%UPARAM(35) = ishap23t
279 fail%UPARAM(36) = ishap23c
280 fail%UPARAM(37) = ishap31t
281 fail%UPARAM(38) = ishap31c
282 fail%UPARAM(39) = nmod
287 IF (is_encrypted)
THEN
288 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
291 WRITE(iout,1100) pthickfail,failip,nmod
292 WRITE(iout,1200) sigma_11t,g_11t,ishap11t,sigma_11c,g_11c,ishap11c
293 WRITE(iout,1300) sigma_22t,g_22t,ishap22t,sigma_22c,g_22c,ishap22c
294 WRITE(iout,1400) sigma_33t,g_33t,ishap33t,sigma_33c,g_33c,ishap33c
295 WRITE(iout,1500) sigma_12t,g_12t,ishap12t,sigma_12c,g_12c,ishap12c
296 WRITE(iout,1600) sigma_23t,g_23t,ishap23t,sigma_23c,g_23c,ishap23c
297 WRITE(iout,1700) sigma_31t,g_31t,ishap31t,sigma_31c,g_31c,ishap31c
301 & 5x,
'--------------------------------------------------'/,
302 & 5x,
' ENERGY BASED ORTHOTROPIC FAILURE MODEL '/,
303 & 5x,
'--------------------------------------------------'/)
305 & 5x,
'ELEMENT DELETION PARAMETERS: '/,
307 & 5x,
'SHELL ELEMENT DELETION PARAMETER PTHICKFAIL. . . .=',1pg20.13,/,
308 & 5x,' > 0.0 : fraction of failed thickness
',/,
309 & 5X,' < 0.0 : fraction of failed intg. points or layers
',/,
310 & 5X,'number of failed intg. pts prior to solid deletion=
',I5/,
311 & 5X,'number of failed modes prior to itg. point failure=
',I5/)
313 & 5X,'direction 11 parameters:
'/,
315 & 5X,'critical stress in tension sigma_11t . . . . . . .=
',1PG20.13,/,
316 & 5X,'fracture energy in tension g_11t . . . . . . . . .=
',1PG20.13,/,
317 & 5X,'stress softening flag in tension ishap11t. . . . .=
',I3/,
318 & 5X,' ishap11t = 1: linear(default)
',/,
319 & 5X,' ishap11t = 2: exponential
',/,
320 & 5X,'critical stress in compression sigma_11c . . . . .=',1pg20.13,/,
321 & 5x,
'FRACTURE ENERGY IN COMPRESSION G_11C . . . . . . .=',1pg20.13,/,
322 & 5x,
'STRESS SOFTENING FLAG IN COMPRESSION ISHAP11C. . .=',i3/,
323 & 5x,
' ISHAP11C = 1: LINEAR (DEFAULT) ',/,
324 & 5x,
' ISHAP11C = 2: EXPONENTIAL ',/)
326 & 5x,
'DIRECTION 22 PARAMETERS: '/,
328 & 5x,
'CRITICAL STRESS IN TENSION SIGMA_22T . . . . . . .=',1pg20.13,/,
329 & 5x,
'FRACTURE ENERGY IN TENSION G_22T . . . . . . . . .=',1pg20.13,/,
330 & 5x,
'STRESS SOFTENING FLAG IN TENSION ISHAP22T. . . . .=',i3/,
331 & 5x,
' ISHAP22T = 1: LINEAR (DEFAULT) ',/,
332 & 5x,
' ISHAP22T = 2: EXPONENTIAL ',/,
333 & 5x,
'CRITICAL STRESS IN COMPRESSION SIGMA_22C . . . . .=',1pg20.13,/,
334 & 5x,
'FRACTURE ENERGY IN COMPRESSION G_22C . . . . . . .=',1pg20.13,/,
335 & 5x,
'STRESS SOFTENING FLAG IN COMPRESSION ISHAP22C. . .=',i3/,
336 & 5x,
' ISHAP22C = 1: LINEAR (DEFAULT) ',/,
337 & 5x,
' ISHAP22C = 2: EXPONENTIAL ',/)
339 & 5x,
'DIRECTION 33 PARAMETERS: '/,
341 & 5x,
'CRITICAL STRESS IN TENSION SIGMA_33T . . . . . . .=',1pg20.13,/,
342 & 5x,
'FRACTURE ENERGY IN TENSION G_33T . . . . . . . . .=',1pg20.13,/,
343 & 5x,
'STRESS SOFTENING FLAG IN TENSION ISHAP33T. . . . .=',i3/,
344 & 5x,
' ISHAP33T = 1: LINEAR (DEFAULT) ',/,
345 & 5x,
' ISHAP33T = 2: EXPONENTIAL ',/,
346 & 5x,
'CRITICAL STRESS IN COMPRESSION SIGMA_33C . . . . .=',1pg20.13,/,
347 & 5x,
'FRACTURE ENERGY IN COMPRESSION G_33C . . . . . . .=',1pg20.13,/,
348 & 5x,
'STRESS SOFTENING FLAG IN COMPRESSION ISHAP33C. . .=',i3/,
349 & 5x,
' ISHAP33C = 1: LINEAR (DEFAULT) ',/,
350 & 5x,
' ISHAP33C = 2: EXPONENTIAL ',/)
352 & 5x,
'PLANE 12 PARAMETERS: '/,
354 & 5x,
'CRITICAL STRESS IN POSITIVE SHEAR SIGMA_12T. . . .=',1pg20.13,/,
355 & 5x,
'FRACTURE ENERGY IN POSITIVE SHEAR G_12T. . . . . .=',1pg20.13,/,
356 & 5x,
'STRESS SOFTENING FLAG IN POSITIVE SHEAR ISHAP12T .=',i3/,
357 & 5x,' ishap12t = 1: linear(default)
',/,
358 & 5X,' ishap12t = 2: exponential
',/,
359 & 5X,'critical stress in negative shear sigma_12c. . . .=
',1PG20.13,/,
360 & 5X,'fracture energy in negative shear g_12c. . . . . .=
',1PG20.13,/,
361 & 5X,'stress softening flag in negative shear ishap12c .=
',I3/,
362 & 5X,' ishap12c = 1: linear(default)
',/,
363 & 5X,' ishap12c = 2: exponential
',/)
365 & 5X,'plane 23 parameters:
'/,
367 & 5X,'critical stress in positive shear sigma_23t. . . .=
',1PG20.13,/,
368 & 5X,'fracture energy in positive shear g_23t. . . . . .=',1pg20.13,/,
369 & 5x,
'STRESS SOFTENING FLAG IN POSITIVE SHEAR ISHAP23T .=',i3/,
370 & 5x,
' ISHAP23T = 1: LINEAR (DEFAULT) ',/,
371 & 5x,
' ISHAP23T = 2: EXPONENTIAL ',/,
372 & 5x,
'CRITICAL STRESS IN NEGATIVE SHEAR SIGMA_23C. . . .=',1pg20.13,/,
373 & 5x,
'FRACTURE ENERGY IN NEGATIVE SHEAR G_23C. . . . . .=',1pg20.13,/,
374 & 5x,
'STRESS SOFTENING FLAG IN NEGATIVE SHEAR ISHAP23C .=',i3/,
375 & 5x,
' ISHAP23C = 1: LINEAR (DEFAULT) ',/,
376 & 5x,
' ISHAP23C = 2: EXPONENTIAL ',/)
378 & 5x,
'PLANE 31 PARAMETERS: '/,
380 & 5x,
'CRITICAL STRESS IN POSITIVE SHEAR SIGMA_31T. . . .=',1pg20.13,/,
381 & 5x,
'FRACTURE ENERGY IN POSITIVE SHEAR G_31T. . . . . .=',1pg20.13,/,
382 & 5x,
'STRESS SOFTENING FLAG IN POSITIVE SHEAR ISHAP31T .=',i3/,
383 & 5x,
' ISHAP31T = 1: LINEAR (DEFAULT) ',/,
384 & 5x,
' ISHAP31T = 2: EXPONENTIAL ',/,
385 & 5x,
'CRITICAL STRESS IN NEGATIVE SHEAR SIGMA_31C. . . .=',1pg20.13,/,
386 & 5x,
'FRACTURE ENERGY IN NEGATIVE SHEAR G_31C. . . . . .=',1pg20.13,/,
387 & 5x,
'STRESS SOFTENING FLAG IN NEGATIVE SHEAR ISHAP31C .=',i3/,
388 & 5x,
' ISHAP31C = 1: LINEAR (DEFAULT) ',/,
389 & 5x,
' ISHAP31C = 2: EXPONENTIAL ',/)