38
39
40
41
42
43
44 USE fail_param_mod
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "units_c.inc"
57
58
59
60 INTEGER ,INTENT(IN) :: FAIL_ID
61 INTEGER ,INTENT(IN) :: IRUPT
62 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
63 TYPE (SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
64 TYPE (FAIL_PARAM_) ,INTENT(INOUT) :: FAIL
65
66
67
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,
74 . sigma_31c,g_31c
75 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
76
77 is_encrypted = .false.
78 is_available = .false.
79
80
81
83
84
85
86
87 CALL hm_get_floatv (
'PTHICKFAIL',pthickfail ,is_available,lsubmodel
88 CALL hm_get_intv (
'NMOD' ,nmod ,is_available,lsubmodel)
89 CALL hm_get_intv (
'FAILIP' ,failip ,is_available,lsubmodel)
90
91
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)
98
99
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)
106
107
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)
112 CALL hm_get_floatv (
'G_33C' ,g_33c ,is_available,lsubmodel,unitab)
113 CALL hm_get_intv (
'ISHAP33C' ,ishap33c ,is_available,lsubmodel)
114
115
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)
122
123
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)
130
131
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)
136 CALL hm_get_floatv (
'G_31C' ,g_31c ,is_available,lsubmodel,unitab)
137 CALL hm_get_intv (
'ISHAP31C' ,ishap31c ,is_available,lsubmodel)
138
139
140
141
142
143 IF (pthickfail == zero) pthickfail = one-em06
144 pthickfail =
min(pthickfail, one)
145 pthickfail =
max(pthickfail,-one)
146
147 IF (nmod == 0) nmod = 1
149
150 IF (failip == 0) failip = 1
151
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)
158
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
165
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
172
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
179
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
186
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)
223
224
225
226
227 fail%KEYWORD = 'ORTHENERG'
228 fail%IRUPT = irupt
229 fail%FAIL_ID = fail_id
230 fail%NUPARAM = 39
231 fail%NIPARAM = 0
232 fail%NUVAR = 25
233 fail%NFUNC = 0
234 fail%NTABLE = 0
235 fail%NMOD = 0
236 fail%PTHK = pthickfail
237
238 ALLOCATE (fail%UPARAM(fail%NUPARAM))
239 ALLOCATE (fail%IPARAM(fail%NIPARAM))
240 ALLOCATE (fail%IFUNC (fail%NFUNC))
241 ALLOCATE (fail%TABLE (fail%NTABLE))
242
243
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
257 fail%UPARAM(14) = sigma_31c
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
275 fail%UPARAM(32) = ishap33c
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
283
284
285
286
287 IF (is_encrypted) THEN
288 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
289 ELSE
290 WRITE(iout,1000)
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
298 ENDIF
299
3001000 FORMAT(
301 & 5x,'--------------------------------------------------'/,
302 & 5x,' ENERGY BASED ORTHOTROPIC FAILURE MODEL '/,
303 & 5x,'--------------------------------------------------'/)
3041100 FORMAT(
305 & 5x,'ELEMENT DELETION PARAMETERS: '/,
306 & 5x,' '/,
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/)
3121200 FORMAT(
313 & 5x,'DIRECTION 11 PARAMETERS: '/,
314 & 5x,' '/,
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 ',/)
3251300 FORMAT(
326 & 5x,'DIRECTION 22 PARAMETERS: '/,
327 & 5x,' '/,
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 ',/)
3381400 FORMAT(
339 & 5x,'DIRECTION 33 PARAMETERS: '/,
340 & 5x,' '/,
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 ',/)
3511500 FORMAT(
352 & 5x,'PLANE 12 PARAMETERS: '/,
353 & 5x,' '/,
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 ',/)
3641600 FORMAT(
365 & 5x,'PLANE 23 PARAMETERS: '/,
366 & 5x,' '/,
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 ',/)
3771700 FORMAT(
378 & 5x,'PLANE 31 PARAMETERS: '/,
379 & 5x,' '/,
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 ',/)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)