42
43
44
45
46
47
48 USE fail_param_mod
54
55
56
57#include "implicit_f.inc"
58
59
60
61#include "units_c.inc"
62
63
64
65 INTEGER ,INTENT(IN) :: FAIL_ID
66 INTEGER ,INTENT(IN) :: MAT_ID
67 INTEGER ,INTENT(IN) :: IRUPT
68 CHARACTER ,INTENT(IN) :: TITR*500
69 TYPE (UNIT_TYPE_) ,INTENT(IN) ::
70 TYPE (SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
71 TYPE (FAIL_PARAM_) ,INTENT(INOUT) :: FAIL
72 TYPE (FAIL_TAG_) ,INTENT(INOUT) :: FAIL_TAG
73
74
75
76 INTEGER I,J,NSTEP,NCS,fct_IDsm,fct_IDps,fct_IDg12,fct_IDg13,
77 . fct_IDe1c,fct_IDel,Itab,tab_IDfld,Istrain,CRIT,
78 . Ismooth,NCRIT_MAX,NFUNC,NTABLE,NUPARAM,NUVAR,NMODE,FAILIP
79 INTEGER ,PARAMETER :: NSIZE = 6
80 INTEGER ,DIMENSION(NSIZE) :: IFUNC
82 . minpres,maxpres,sigp1,tmax,dtmin,epsdot_sm,sigvm,sigth,kf,
83 . epsdot_ps,maxeps,effeps,voleps,mineps,epssh,epsdot_fld,
84 . thin,volfrac,pthk,maxtemp,fscale_el,el_ref,freq_unit,
85 . pressure_unit,length_unit
86 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
87 CHARACTER(LEN=NCHARTITLE), DIMENSION(50) :: MODNAME
88
89 is_encrypted = .false.
90 is_available = .false.
91
92 ncrit_max = 0
93
94 nmode = 0
95
96 crit = 0
97
98
99
101
102
103
104
105
106
107 CALL hm_get_floatv (
'MAT_MINPRES' ,minpres ,is_available,lsubmodel,unitab)
108 IF (minpres /= zero) THEN
109 crit = ibset(crit,1)
110 nmode = nmode + 1
111 modname(nmode) = "Minimum hydrostatic pressure"
112 ENDIF
113 CALL hm_get_floatv (
'MAT_MAXPRES' ,maxpres ,is_available,lsubmodel,unitab)
114 IF (maxpres /= zero) THEN
115 crit = ibset(crit,2)
116 nmode = nmode + 1
117 modname(nmode) = "Maximum hydrostatic pressure"
118 ENDIF
119 IF ((minpres /= zero).OR.(maxpres /= zero)) ncrit_max = ncrit_max + 1
120 CALL hm_get_floatv (
'MAT_SIGP1' ,sigp1 ,is_available,lsubmodel,unitab)
121 IF (sigp1 /= zero) THEN
122 ncrit_max = ncrit_max + 1
123 crit = ibset(crit,3)
124 nmode = nmode + 1
125 modname(nmode) = "Maximum principal stress"
126 ENDIF
127 CALL hm_get_floatv (
'MAT_TMAX' ,tmax ,is_available,lsubmodel,unitab)
128 IF (tmax /= zero) THEN
129 ncrit_max = ncrit_max + 1
130 crit = ibset(crit,4)
131 nmode = nmode + 1
132 modname(nmode) = "Failure time"
133 ENDIF
134 CALL hm_get_floatv (
'MAT_DTMIN' ,dtmin ,is_available,lsubmodel,unitab)
135 IF (dtmin /= zero) THEN
136 ncrit_max = ncrit_max + 1
137 crit = ibset(crit,5)
138 nmode = nmode + 1
139 modname(nmode) = "Minimum timestep"
140 ENDIF
141
142
143
144 CALL hm_get_intv (
'fct_IDsm' ,fct_idsm ,is_available,lsubmodel)
145 CALL hm_get_floatv (
'MAT_EPSDSM' ,epsdot_sm ,is_available,lsubmodel,unitab)
146 CALL hm_get_floatv (
'MAT_SIGVM' ,sigvm ,is_available,lsubmodel,unitab)
147 IF ((sigvm /= zero).OR.(fct_idsm /= 0)) THEN
148 ncrit_max = ncrit_max + 1
149 crit = ibset(crit,6)
150 nmode = nmode + 1
151 modname(nmode) = "Maximum equivalent stress"
152 ENDIF
153 CALL hm_get_floatv (
'MAT_SIGTH' ,sigth ,is_available,lsubmodel,unitab)
154 CALL hm_get_floatv (
'MAT_KF' ,kf ,is_available,lsubmodel,unitab)
155 IF ((sigth /= zero).OR.(kf /= zero)) THEN
156 ncrit_max = ncrit_max + 1
157 crit = ibset(crit,7)
158 nmode = nmode + 1
159 modname(nmode) = "Tuler-Butcher failure"
160 ENDIF
161
162
163
164 CALL hm_get_intv (
'fct_IDps' ,fct_idps ,is_available,lsubmodel)
165 CALL hm_get_floatv (
'MAT_EPSDPS' ,epsdot_ps ,is_available,lsubmodel,unitab)
166 CALL hm_get_floatv (
'MAT_MAXEPS' ,maxeps ,is_available,lsubmodel,unitab)
167 IF ((maxeps /= zero).OR.(fct_idps /= 0)) THEN
168 ncrit_max = ncrit_max + 1
169 crit = ibset(crit,8)
170 nmode = nmode + 1
171 modname(nmode) = "Maximum principal strain"
172 ENDIF
173 CALL hm_get_floatv (
'MAT_EFFEPS' ,effeps ,is_available,lsubmodel,unitab)
174 IF (effeps /= zero) THEN
175 ncrit_max = ncrit_max + 1
176 crit = ibset(crit,9)
177 nmode = nmode + 1
178 modname(nmode) = "Maximum effective strain"
179 ENDIF
180 CALL hm_get_floatv (
'MAT_VOLEPS' ,voleps ,is_available,lsubmodel,unitab)
181 IF (voleps /= zero) THEN
182 ncrit_max = ncrit_max + 1
183 crit = ibset(crit,10)
184 nmode = nmode + 1
185 modname(nmode) = "Maximum volumetric strain"
186 ENDIF
187
188
189
190 CALL hm_get_floatv (
'MAT_MINEPS' ,mineps ,is_available,lsubmodel,unitab)
191 IF (mineps /= zero) THEN
192 ncrit_max = ncrit_max + 1
193 crit = ibset(crit,11)
194 nmode = nmode + 1
195 modname(nmode) = "Minimum principal strain"
196 ENDIF
197 CALL hm_get_floatv (
'MAT_EPSSH' ,epssh ,is_available,lsubmodel,unitab)
198 IF (epssh /= zero) THEN
199 ncrit_max = ncrit_max + 1
200 crit = ibset(crit,12)
201 nmode = nmode + 1
202 modname(nmode) = "Critical shear strain"
203 ENDIF
204 CALL hm_get_intv (
'fct_IDg12' ,fct_idg12 ,is_available,lsubmodel)
205 IF (fct_idg12 /= 0) THEN
206 crit = ibset(crit,13)
207 nmode = nmode + 1
208 modname(nmode) = "Maximum in-plane shear strain"
209 ENDIF
210 CALL hm_get_intv (
'fct_IDg13' ,fct_idg13 ,is_available,lsubmodel)
211 IF (fct_idg13 /= 0) THEN
212 crit = ibset(crit,14)
213 nmode = nmode + 1
214 modname(nmode) = "Maximum transversal shear strain"
215 ENDIF
216 CALL hm_get_intv (
'fct_IDe1c' ,fct_ide1c ,is_available,lsubmodel)
217 IF (fct_ide1c /= 0) THEN
218 crit = ibset(crit,15)
219 nmode = nmode + 1
220 modname(nmode) = "Maximum in-plane major strain"
221 ENDIF
222 IF ((fct_idg13 /= 0).AND.(fct_ide1c /= 0)) THEN
223 ncrit_max = ncrit_max + 2
224 ELSEIF ((fct_idg12 /= 0).AND.((fct_idg13 /= 0).OR.(fct_ide1c /= 0))) THEN
225 ncrit_max = ncrit_max + 1
226 ELSEIF ((fct_idg12 == 0).AND.(fct_idg13 == 0).AND.(fct_ide1c == 0)) THEN
227 ELSE
228 ncrit_max = ncrit_max + 1
229 ENDIF
230
231
232
233 CALL hm_get_intv (
'tab_IDfld' ,tab_idfld ,is_available,lsubmodel)
234 IF (tab_idfld /= 0) THEN
235 ncrit_max = ncrit_max + 1
236 crit = ibset(crit,16)
237 nmode = nmode + 1
238 modname(nmode) = "Forming Limit Diagram"
239 ENDIF
240 CALL hm_get_intv (
'Itab' ,itab ,is_available,lsubmodel)
241 CALL hm_get_floatv (
'MAT_EPSDFLD' ,epsdot_fld,is_available,lsubmodel,unitab)
242 CALL hm_get_intv (
'MAT_NSTEP' ,nstep ,is_available,lsubmodel)
243 CALL hm_get_intv (
'Ismooth' ,ismooth ,is_available,lsubmodel)
244 CALL hm_get_intv (
'Istrain' ,istrain ,is_available,lsubmodel)
245 CALL hm_get_floatv (
'MAT_THIN' ,thin ,is_available,lsubmodel,unitab)
246 IF (thin /= zero) THEN
247 ncrit_max = ncrit_max + 1
248 crit = ibset(crit,17)
249 nmode = nmode + 1
250 modname(nmode) = "Thinning failure"
251 ENDIF
252
253
254
255 CALL hm_get_intv (
'FAILIP' ,failip ,is_available,lsubmodel)
256 IF (failip == 0) failip = 1
257 CALL hm_get_floatv (
'MAT_VOLFRAC' ,volfrac ,is_available,lsubmodel,unitab)
258 CALL hm_get_floatv (
'Pthk' ,pthk ,is_available,lsubmodel,unitab)
260 CALL hm_get_floatv (
'MAT_MAXTEMP' ,maxtemp ,is_available,lsubmodel,unitab)
261 IF (maxtemp /= zero) THEN
262 ncrit_max = ncrit_max + 1
263 crit = ibset(crit,18)
264 nmode = nmode + 1
265 modname(nmode) = "Maximum temperature"
266 ENDIF
267
268
269
270 CALL hm_get_intv (
'fct_IDel' ,fct_idel ,is_available,lsubmodel)
271 CALL hm_get_floatv ('fscale_el
' ,Fscale_el ,IS_AVAILABLE,LSUBMODEL,UNITAB)
272 CALL HM_GET_FLOATV ('el_ref' ,El_ref ,IS_AVAILABLE,LSUBMODEL,UNITAB)
273
274
275
276 ! Card 1
277 MINPRES = -ABS(MINPRES)
278 IF (MINPRES == ZERO) MINPRES = -INFINITY
279 MAXPRES = ABS(MAXPRES)
280 IF (MAXPRES == ZERO) MAXPRES = INFINITY
281 IF (SIGP1 == ZERO) SIGP1 = INFINITY
282 IF (TMAX == ZERO) TMAX = INFINITY
283 IF (DTMIN == ZERO) DTMIN = -INFINITY
284 ! Card 2
285 IF (fct_IDsm > 0) THEN
286 IF (EPSDOT_SM == ZERO) THEN
287 CALL HM_GET_FLOATV_DIM('mat_epsdsm' ,FREQ_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
288 EPSDOT_SM = ONE*FREQ_UNIT
289 ENDIF
290 IF (SIGVM == ZERO) THEN
291 CALL HM_GET_FLOATV_DIM('mat_sigvm' ,PRESSURE_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
292 SIGVM = ONE*PRESSURE_UNIT
293 ENDIF
294 ELSE
295 IF (SIGVM == ZERO) SIGVM = INFINITY
296 ENDIF
297 IF (SIGTH == ZERO) SIGTH = INFINITY
298 IF (KF == ZERO) KF = INFINITY
299 ! Card 3
300 IF (fct_IDps > 0) THEN
301 IF (EPSDOT_PS == ZERO) THEN
302 CALL HM_GET_FLOATV_DIM('mat_epsdps' ,FREQ_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
303 EPSDOT_PS = ONE*FREQ_UNIT
304 ENDIF
305 IF (MAXEPS == ZERO) THEN
306 MAXEPS = ONE
307 ENDIF
308 ELSE
309 IF (MAXEPS == ZERO) MAXEPS = TWO*INFINITY
310 ENDIF
311 IF (EFFEPS == ZERO) EFFEPS = INFINITY
312 IF (VOLEPS == ZERO) VOLEPS = INFINITY
313 ! Card 4
314 MINEPS = -ABS(MINEPS)
315 IF (MINEPS == ZERO) MINEPS = -INFINITY
316 IF (EPSSH == ZERO) EPSSH = INFINITY
317 ! Card 5
318 IF (tab_IDfld > 0) THEN
319 IF (EPSDOT_FLD == ZERO) THEN
320 CALL HM_GET_FLOATV_DIM('mat_epsdfld' ,FREQ_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
321 EPSDOT_FLD = ONE*FREQ_UNIT
322 ENDIF
323 ENDIF
324 IF (NSTEP == 0) NSTEP = 10
325 IF (Ismooth == 0) Ismooth = 1
326 IF (THIN == ZERO) THIN = -INFINITY
327 ! Card 6
328 IF (VOLFRAC == ZERO) VOLFRAC = HALF
329 VOLFRAC = MIN(VOLFRAC,ONE)
330 VOLFRAC = MAX(ZERO,VOLFRAC)
331 IF (PTHK == ZERO) PTHK = ONE-EM06
332 PTHK = MIN(PTHK, ONE)
333 PTHK = MAX(PTHK,-ONE)
334 IF (NCS == 0 ) NCS = 1
335 IF (NCS > NCRIT_MAX) THEN
336 IF (NCRIT_MAX > 0) THEN
337 CALL ANCMSG(MSGID=2043,MSGTYPE=MSGWARNING,
338 . ANMODE=ANINFO_BLIND_1,I1=MAT_ID,
339 . C1=TITR,I2=NCS,I3=NCRIT_MAX,I4=NCRIT_MAX)
340 NCS = NCRIT_MAX
341 ELSE
342 CALL ANCMSG(MSGID=3040,MSGTYPE=MSGWARNING,
343 . ANMODE=ANINFO_BLIND_1,I1=MAT_ID,
344 . C1=TITR)
345 ENDIF
346 ENDIF
347 NCS = MAX(1,NCS)
348 IF (MAXTEMP == ZERO) MAXTEMP = INFINITY
349 ! Card 7
350 IF (Fscale_el == ZERO) Fscale_el = ONE
351.OR..OR..OR. IF (((fct_IDel > 0)(fct_IDg12 > 0)(fct_IDg13 > 0)(fct_IDe1c > 0)
352.OR..AND..AND. . (tab_IDfld > 0Itab == 2))(El_ref == ZERO)) THEN
353 CALL HM_GET_FLOATV_DIM('el_ref' ,LENGTH_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
354 El_ref = ONE*LENGTH_UNIT
355 ENDIF
356
357
358
359 NUVAR = 8
360 NUPARAM = 23
361 NFUNC = 6
362 NTABLE = 0
363 IF (tab_IDfld > 0) NTABLE = 1
364
365 FAIL%KEYWORD = 'gene1'
366 FAIL%IRUPT = IRUPT
367 FAIL%FAIL_ID = FAIL_ID
368 FAIL%NUPARAM = NUPARAM
369 FAIL%NIPARAM = 6
370 FAIL%NUVAR = NUVAR
371 FAIL%NFUNC = NFUNC
372 FAIL%NTABLE = NTABLE
373 FAIL%NMOD = NMODE
374 FAIL%PTHK = PTHK
375
376 ALLOCATE (FAIL%UPARAM(FAIL%NUPARAM))
377 ALLOCATE (FAIL%IPARAM(FAIL%NIPARAM))
378 ALLOCATE (FAIL%IFUNC (FAIL%NFUNC))
379 ALLOCATE (FAIL%TABLE (FAIL%NTABLE))
380
381 ! Modes of failure
382 FAIL_TAG%LF_DAMMX = FAIL_TAG%LF_DAMMX + FAIL%NMOD
383 ALLOCATE (FAIL%MODE(FAIL%NMOD))
384 DO I = 1,FAIL%NMOD
385 FAIL%MODE(I) = MODNAME(I)
386 ENDDO
387
388 FAIL%IFUNC(1) = fct_IDsm
389 FAIL%IFUNC(2) = fct_IDps
390 FAIL%IFUNC(3) = fct_IDg12
391 FAIL%IFUNC(4) = fct_IDg13
392 FAIL%IFUNC(5) = fct_IDe1c
393 FAIL%IFUNC(6) = fct_IDel
394 IF (NTABLE == 1) FAIL%TABLE(1) = tab_IDfld
395
396 FAIL%IPARAM(1) = CRIT
397 FAIL%IPARAM(2) = Itab
398 FAIL%IPARAM(3) = NSTEP
399 FAIL%IPARAM(4) = NCS
400 FAIL%IPARAM(5) = Ismooth
401 FAIL%IPARAM(6) = Istrain
402
403 FAIL%UPARAM(1) = MINPRES
404 FAIL%UPARAM(2) = MAXPRES
405 FAIL%UPARAM(3) = SIGP1
406 FAIL%UPARAM(4) = TMAX
407 FAIL%UPARAM(5) = DTMIN
408 FAIL%UPARAM(6) = EPSDOT_SM
409 FAIL%UPARAM(7) = SIGVM
410 FAIL%UPARAM(8) = SIGTH
411 FAIL%UPARAM(9) = KF
412 FAIL%UPARAM(10) = EPSDOT_PS
413 FAIL%UPARAM(11) = MAXEPS
414 FAIL%UPARAM(12) = EFFEPS
415 FAIL%UPARAM(13) = VOLEPS
416 FAIL%UPARAM(14) = MINEPS
417 FAIL%UPARAM(15) = EPSSH
418 FAIL%UPARAM(16) = EPSDOT_FLD
419 FAIL%UPARAM(17) = THIN
420 FAIL%UPARAM(18) = VOLFRAC
421 FAIL%UPARAM(19) = PTHK
422 FAIL%UPARAM(20) = MAXTEMP
423 FAIL%UPARAM(21) = Fscale_el
424 FAIL%UPARAM(22) = El_ref
425 FAIL%UPARAM(23)= FAILIP
426
427
428
429 IF (IS_ENCRYPTED) THEN
430 WRITE(IOUT,'(5x,a,//)')'confidential data'
431 ELSE
432 ! Title of the failure criterion
433 WRITE(IOUT,1000)
434 ! Number of criteria setup in the input
435 WRITE(IOUT,1001) NCRIT_MAX
436 ! Number of criteria to reach for element deletion
437 WRITE(IOUT,1002) NCS
438 ! Definition of the criteria
439 WRITE(IOUT,1003)
440 ! Card 1
441 IF (BTEST(CRIT,1)) WRITE(IOUT,1100) MINPRES
442 IF (BTEST(CRIT,2)) WRITE(IOUT,1101) MAXPRES
443.OR. IF (BTEST(CRIT,1) BTEST(CRIT,2)) WRITE(IOUT,1105)
444 IF (BTEST(CRIT,3)) WRITE(IOUT,1102) SIGP1
445 IF (BTEST(CRIT,4)) WRITE(IOUT,1103) TMAX
446 IF (BTEST(CRIT,5)) WRITE(IOUT,1104) DTMIN
447 ! Card 2
448 IF (BTEST(CRIT,6)) THEN
449 IF (fct_IDsm > 0) THEN
450 WRITE(IOUT,2000) fct_IDsm,EPSDOT_SM,SIGVM
451 ELSE
452 WRITE(IOUT,2100) SIGVM
453 ENDIF
454 ENDIF
455 IF (BTEST(CRIT,7)) WRITE(IOUT,2001) SIGTH,KF
456 ! Card 3
457 IF (BTEST(CRIT,8)) THEN
458 IF (fct_IDps > 0) THEN
459 WRITE(IOUT,3000) fct_IDps,EPSDOT_PS,MAXEPS
460 ELSE
461 WRITE(IOUT,3100) MAXEPS
462 ENDIF
463 ENDIF
464 IF (BTEST(CRIT,9)) WRITE(IOUT,3001) EFFEPS
465 IF (BTEST(CRIT,10)) WRITE(IOUT,3002) VOLEPS
466 ! Card 4
467 IF (BTEST(CRIT,11)) WRITE(IOUT,4000) MINEPS
468 IF (BTEST(CRIT,12)) WRITE(IOUT,4001) EPSSH
469 IF (BTEST(CRIT,13)) WRITE(IOUT,4100) fct_IDg12
470 IF (BTEST(CRIT,14)) WRITE(IOUT,4200) fct_IDg13
471 IF (BTEST(CRIT,15)) WRITE(IOUT,4300) fct_IDe1c
472 ! Card 5
473 IF (BTEST(CRIT,16)) THEN
474 WRITE(IOUT,5000) tab_IDfld,Itab,EPSDOT_FLD,
475 . Ismooth,Istrain
476 ENDIF
477 IF (BTEST(CRIT,17)) WRITE(IOUT,5002) THIN
478 ! Card 6
479 IF (BTEST(CRIT,18)) WRITE(IOUT,6001) MAXTEMP
480 ! Card 7
481 IF (fct_IDel > 0) WRITE(IOUT,7000) fct_IDel,Fscale_el
482.OR..OR..OR. IF (((fct_IDel > 0)(fct_IDg12 > 0)(fct_IDg13 > 0)(fct_IDe1c > 0)
483.OR..AND. . (tab_IDfld > 0Itab == 2))) WRITE(IOUT,7100) El_ref
484 ! Element deletion properties
485 WRITE(IOUT,7101)
486 WRITE(IOUT,6000) VOLFRAC,PTHK,FAILIP
487 WRITE(IOUT,5001) NSTEP
488 WRITE(IOUT,8000)
489 ENDIF
490
491 1000 FORMAT(
492 & 5X,' ----------------------------------------------------',/,
493 & 5X,' failure criterion : gene1 ',/,
494 & 5X,' ----------------------------------------------------',/)
495 1001 FORMAT(
496 & 5X,'number of criteria specified in
the input. . . . . .=
',I10,/)
497 1002 FORMAT(
498 & 5X,'number of criteria to reach
for element deletion . .=
',I10,/)
499 1003 FORMAT(
500 & 5X,'specified element deletion criteria:',/,
501 & 5X,'------------------------------------',/)
502 1100 FORMAT(
503 & 5X,'minimum pressure . . . . . . . . . . . . . . . . . .=',1PG20.13,/)
504 1101 FORMAT(
505 & 5X,'maximum pressure . . . . . . . . . . . . . . . . . .=',1PG20.13,/)
506 1102 FORMAT(
507 & 5X,'maximum principal stress . . . . . . . . . . . . . .=',1PG20.13,/
508 & 5X,' < 0.0 : restricted to positive stress triaxialities',/,
509 & 5X,' > 0.0 : unrestricted ',/)
510 1103 FORMAT(
511 & 5X,'failure time . . . . . . . . . . . . . . . . . . . .=',1PG20.13,/)
512 1104 FORMAT(
513 & 5X,'minimum time step . . . . . . . . . . . . . . . . .=',1PG20.13,/)
514 1105 FORMAT(
515 & 5X,'note : pressure is defined so that it is positive in compression',/)
516 2000 FORMAT(
517 & 5X,'FUNCTION id for eq. stress vs strain-rate . . . . .=
',I10,/,
518 & 5X,'reference strain-rate . . . . . . . . . . . . . . .=',1PG20.13,/
519 & 5X,'equivalent stress scale factor . . . . . . . . . . .=',1PG20.13,/)
520 2001 FORMAT(
521 & 5X,'initial stress
for tuler-butcher criterion . . . . .=
',1PG20.13,/
522 & 5X,'critical tuler-butcher integral value . . . . . . .=',1PG20.13,/)
523 2100 FORMAT(
524 & 5X,'maximum equivalent stress . . . . . . . . . . . . .=',1PG20.13,/)
525 3000 FORMAT(
526 & 5X,'function
id for princ. strain vs strain-rate . . . .=
',I10,/,
527 & 5X,'reference strain-rate . . . . . . . . . . . . . . .=',1PG20.13,/
528 & 5X,'principal strain scale factor . . . . . . . . . . .=',1PG20.13,/)
529 3001 FORMAT(
530 & 5X,'maximum effective strain . . . . . . . . . . . . . .=',1PG20.13,/)
531 3002 FORMAT(
532 & 5X,'maximum volumetric strain . . . . . . . . . . . . .=',1PG20.13,/)
533 3100 FORMAT(
534 & 5X,'maximum principal strain . . . . . . . . . . . . . .=',1PG20.13,/)
535 4000 FORMAT(
536 & 5X,'minimum principal strain . . . . . . . . . . . . . .=',1pg20.13,/)
537 4001 FORMAT(
538 & 5x,'TENSORIAL SHEAR STRAIN AT FAILURE. . . . . . . . . .=',1pg20.13,/)
539 4100 FORMAT(
540 & 5x,'FUNCTION ID FOR MAX.IN-PLANE SHEAR VS EL.SIZE . . .=',i10,/)
541 4200 FORMAT(
542 & 5x,'FUNCTION ID FOR MAX.TRANSVERSE SHEAR VS EL.SIZE . .=',i10,/)
543 4300 FORMAT(
544 & 5x,'FUNCTION ID FOR IN-PLANE MAJOR STRAIN VS EL.SIZE . .=',i10,/)
545 5000 FORMAT(
546 & 5x,'TABLE ID FOR FORMING LIMIT DIAGRAM . . . . . . . . .=',i10,/,
547 & 5x,'FLAG FOR TABLE DEPENDENCY . . . . . . . . . . . . .=',i10,/,
548 & 5x,' = 1 : FORMING LIMIT DIAGRAM VS STRAIN-RATE ',/,
549 & 5x,' = 2 : FORMING LIMIT DIAGRAM VS ELEMENT SIZE ',/,
550 & 5x,'REFERENCE STRAIN-RATE . . . . . . . . . . . . . . .=',1pg20.13,/,
551 & 5x,'TABULATED FUNCTION INTERPOLATION FLAG . . . . . . .=',i10,/,
552 & 5x,'engineering / true input strain flag . . . . . . . .=',I10,/)
553 5001 FORMAT(
554 & 5X,'number of cycles before element deletion . . . . . .=',I10,/)
555 5002 FORMAT(
556 & 5X,'shell thinning at failure . . . . . . . . . . . . .=',1PG20.13,/)
557 6000 FORMAT(
558 & 5X,'volume fraction
for solid element deletion . . . . .=
',1PG20.13,/,
559 & 5X,'shell element deletion PARAMETER pthickfail. . . . .=',1PG20.13,/,
560 & 5X,' > 0.0 : fraction of failed thickness ',/,
561 & 5X,' < 0.0 : fraction of failed intg. points or layers ',/,
562 & 5X,'number of failed intg. points prior to elem deletion .=',I10/)
563 6001 FORMAT(
564 & 5X,'maximum temperature . . . . . . . . . . . . . . . .=',1PG20.13,/)
565 7000 FORMAT(
566 & 5X,'regularization
FUNCTION id . . . . . . . . . . . . .=
',I10,/,
567 & 5X,'scale factor
for regularization function . . . . . .=
',1PG20.13,/)
568 7100 FORMAT(
569 & 5X,'reference element length . . . . . . . . . . . . . .=',1PG20.13,/)
570 7101 FORMAT(
571 & 5X,'element deletion properties:',/,
572 & 5X,'----------------------------',/)
573 8000 FORMAT(
574 & 5X,' ----------------------------------------------------',//)
575
end diagonal values have been computed in the(sparse) matrix id.SOL
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)
for(i8=*sizetab-1;i8 >=0;i8--)