41 . FAIL ,MAT_ID ,FAIL_ID ,IRUPT ,
42 . TITR ,LSUBMODEL,UNITAB )
54#include "implicit_f.inc"
62 INTEGER ,
INTENT(IN) :: FAIL_ID
63 INTEGER ,
INTENT(IN) :: MAT_ID
64 INTEGER ,
INTENT(IN) :: IRUPT ! failure model
type number
65 CHARACTER ,
INTENT(IN) :: TITR*500
68 TYPE(fail_param_) ,
INTENT(INOUT) :: FAIL
72 INTEGER I,J,NINIEVO,FAILIP,ISHEAR,ILEN,NUPARAM,NUVAR,NTABLE
73 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
74 . initype,evotype,evoshap,comptyp,tab_id,tab_el
75 my_real :: pthk,length_unit,rate_unit
76 my_real,
DIMENSION(:),
ALLOCATABLE ::
77 . sr_ref,fscale,ini_p1,el_ref,elscal,disp,ener,
alpha
78 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
80 is_encrypted = .false.
81 is_available = .false.
92 CALL hm_get_intv (
'NINIEVO' ,ninievo ,is_available,lsubmodel)
93 IF (ninievo == 0) ninievo = 1
94 CALL hm_get_intv (
'ISHEAR' ,ishear ,is_available,lsubmodel)
95 ishear =
min(ishear,1)
96 CALL hm_get_intv (
'ILEN' ,ilen ,is_available,lsubmodel)
101 . anmode=aninfo_blind,
105 CALL hm_get_intv (
'FAILIP' ,failip ,is_available,lsubmodel)
106 IF (failip == 0) failip = 1
107 CALL hm_get_floatv (
'PTHK' ,pthk ,is_available,lsubmodel,unitab)
108 IF (pthk == zero) pthk = em06
109 pthk =
min(pthk, one)
110 pthk =
max(pthk,-one)
114 ALLOCATE(initype(ninievo),evotype(ninievo),evoshap(ninievo),comptyp(ninievo))
115 ALLOCATE(tab_id(ninievo) ,sr_ref(ninievo) ,fscale
116 ALLOCATE(tab_el(ninievo) ,el_ref(ninievo) ,elscal(ninievo) )
117 ALLOCATE(disp(ninievo) ,ener(ninievo) ,
alpha(ninievo) )
118 initype(1:ninievo) = 0
119 evotype(1:ninievo) = 0
120 evoshap(1:ninievo) = 0
121 comptyp(1:ninievo) = 0
122 tab_id(1:ninievo) = 0
123 tab_el(1:ninievo) = 0
124 sr_ref(1:ninievo) = zero
125 fscale(1:ninievo) = zero
126 ini_p1(1:ninievo) = zero
127 el_ref(1:ninievo) = zero
128 elscal(1:ninievo) = zero
129 disp(1:ninievo) = zero
130 ener(1:ninievo) = zero
131 alpha(1:ninievo) = zero
136 initype(j) =
min(initype(j),5)
137 IF (initype(j) == 0) initype(j) = 1
139 evotype(j) =
max(evotype(j),0)
140 evotype(j) =
min(evotype(j),2)
142 evoshap(j) =
min(evoshap(j),2)
143 IF (evoshap(j) == 0) evoshap(j) = 1
145 comptyp(j) =
min(comptyp(j),2)
146 IF (comptyp(j) == 0) comptyp(j) = 1
149 IF (tab_id(j) == 0)
THEN
150 CALL ancmsg(msgid=2088, msgtype=msgerror, anmode=aninfo_blind,
155 IF (sr_ref(j) == zero)
THEN
157 sr_ref(j) = one*rate_unit
160 IF (fscale(j) == zero) fscale(j) = one
165 IF (el_ref(j) == zero)
THEN
167 el_ref(j) = one*length_unit
170 IF (elscal(j) == zero) elscal(j) = one
173 IF (evotype(j) == 1 .AND. disp(j) == zero)
THEN
174 CALL ancmsg(msgid=2089, msgtype=msgerror, anmode=aninfo_blind,
181 IF (evotype(j) == 2 .AND. ener(j) == zero)
THEN
182 CALL ancmsg(msgid=2090, msgtype=msgerror, anmode=aninfo_blind,
193 nuvar = 2 + 3*ninievo
195 nuparam = 5 + ninievo*14
197 fail%KEYWORD =
'INIEVO'
199 fail%FAIL_ID = fail_id
200 fail%NUPARAM = nuparam
208 ALLOCATE (fail%UPARAM(fail%NUPARAM))
209 ALLOCATE (fail%IPARAM(fail%NIPARAM))
210 ALLOCATE (fail%IFUNC (fail%NFUNC))
211 ALLOCATE (fail%TABLE (fail%NTABLE))
213 fail%UPARAM(1) = ninievo
214 fail%UPARAM(2) = ishear
215 fail%UPARAM(3) = ilen
216 fail%UPARAM(4) = failip
217 fail%UPARAM(5) = pthk
219 fail%TABLE(1:ninievo) = tab_id(1:ninievo)
220 fail%TABLE(ninievo+1:ninievo*2) = tab_el(1:ninievo)
223 fail%UPARAM(6 + 14*(j-1)) = initype(j)
224 fail%UPARAM(7 + 14*(j-1)) = evotype(j)
225 fail%UPARAM(8 + 14*(j-1)) = evoshap(j)
226 fail%UPARAM(9 + 14*(j-1)) = comptyp(j)
227 fail%UPARAM(10 + 14*(j-1)) = 0
228 fail%UPARAM(11 + 14*(j-1)) = sr_ref(j)
229 fail%UPARAM(12 + 14*(j-1)) = fscale(j)
230 fail%UPARAM(13 + 14*(j-1)) = ini_p1(j)
231 fail%UPARAM(14 + 14*(j-1)) = 0
232 fail%UPARAM(15 + 14*(j-1)) = el_ref(j)
233 fail%UPARAM(16 + 14*(j-1)) = elscal(j)
234 fail%UPARAM(17 + 14*(j-1)) = disp(j)
235 fail%UPARAM(18 + 14*(j-1)) =
alpha(j)
236 fail%UPARAM(19 + 14*(j-1)) = ener(j)
241 IF (is_encrypted)
THEN
242 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
245 WRITE(iout,1100) ninievo,ishear,ilen
246 WRITE(iout,1200) failip,pthk
248 WRITE (iout,1300) j,initype(j),tab_id(j),sr_ref(j),fscale(j),
249 . ini_p1(j),tab_el(j),el_ref(j),elscal(j)
250 IF (evotype(j) == 1)
THEN
251 IF (evoshap(j) == 1)
THEN
252 WRITE (iout,1400) evotype(j),evoshap(j),comptyp(j),
255 WRITE (iout,1500) evotype(j),evoshap(j),comptyp(j),
258 ELSEIF (evotype(j) == 2)
THEN
259 WRITE (iout,1600) evotype(j),evoshap(j),comptyp(j),
268 IF (
ALLOCATED(initype))
DEALLOCATE(initype)
269 IF (
ALLOCATED(evotype))
DEALLOCATE(evotype)
270 IF (
ALLOCATED(evoshap))
DEALLOCATE(evoshap)
271 IF (
ALLOCATED(comptyp))
DEALLOCATE(comptyp)
272 IF (
ALLOCATED(tab_id))
DEALLOCATE(tab_id)
273 IF (
ALLOCATED(tab_el))
DEALLOCATE(tab_el)
274 IF (
ALLOCATED(sr_ref))
DEALLOCATE(sr_ref)
275 IF (
ALLOCATED(fscale))
DEALLOCATE(fscale)
276 IF (
ALLOCATED(ini_p1))
DEALLOCATE(ini_p1)
277 IF (
ALLOCATED(el_ref))
DEALLOCATE(el_ref)
278 IF (
ALLOCATED(elscal))
DEALLOCATE(elscal)
279 IF (
ALLOCATED(disp))
DEALLOCATE(disp)
280 IF (
ALLOCATED(ener))
DEALLOCATE(ener)
284 & 5x,
' ---------------------------------------------------- ',/
285 & 5x,
' FAILURE CRITERION : INIEVO ',/,
286 & 5x,
' ---------------------------------------------------- ',/)
288 & 5x,
'NUMBER OF INIEVO CRITERIA. . . . . . . . . . . . . . . .=',i10,/,
289 & 5x,
'TRANSVERSE SHEAR FLAG (SHELLS ONLY) . . . . . . . . . .=',i10,/,
290 & 5x,
' ISHEAR = 0: TRANSVERSE SHEAR STRESS COMPONENTS NOT CONSIDERED ',/,
291 & 5x,
' ISHEAR = 1: TRANSVERSE SHEAR STRESS COMPONENTS CONSIDERED ',/,
292 & 5x,
'ELEMENT CHARACTERISTIC LENGTH FLAG . . . . . . . . . . .=',i10,/,
293 & 5x,
' ILEN = 0: INITIAL GEOMETRIC FORMULATION ',/,
294 & 5x,
' ILEN = 1: INITIAL CRITICAL TIMESTEP FORMULATION ',/,
295 & 5x,
' ILEN = 2: CURRENT GEOMETRIC FORMULATION (SHELLS ONLY)',/)
297 & 5x,
'ELEMENT DELETION PARAMETERS: ',/,
298 & 5x,'number of failed intg. points prior to solid deletion . =
',I10,/,
299 & 5X,'shell element deletion
PARAMETER pthickfail
',1PG20.13,/,
300 & 5X,' > 0.0 : fraction of failed thickness
',/,
301 & 5X,' < 0.0 : fraction of failed intg. points or layers
',/)
303 & 5X,'|| inievo criterion number
#',I3,/,
304 & 5x,
' ------------------------------------------------- ',/,
305 & 5x,
'> INITIATION PARAMETERS: ',/,
306 'DAMAGE INITIATION TYPE . . . . . . . . . . . . . . . . =',i10,/,
307 & 5x,
' TABLE DEFINING PLASTIC STRAIN AT FAILURE WITH: ',/,
308 & 5x,
' = 1: TRIAXIALITY VS STRAIN RATE ',/,
309 & 5x,
' = 2: SHEAR INFLUENCE VS STRAIN RATE ',/,
310 & 5x,
' = 3: PRINC. STRAIN RATES RATIO VS STRAIN RATE (TRIAX > 0.0)',/,
311 & 5x,
' = 4: PRINC. STRAIN RATES RATIO VS STRAIN RATE ',/,
312 & 5x,
' = 5: STRESS STATE PARAMETER VS STRAIN RATE ',/,
313 & 5x,
'INITIATION TABLE IDENTIFIER. . . . . . . . . . . . . . =',i10,/,
314 & 5x,
' REFERENCE STRAIN RATE . . . . . . . . . . . . . . .=',1pg20.13/,
315 & 5x,
' SCALE FACTOR . . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
316 & 5x,
'DAMAGE INITIATION PARAMETER . . . . . . . . . . . . . .=',1pg20
317 & 5x,
' INI. TYPE = 1: NOT USED ',/,
318 & 5x,
' INI. TYPE = 2: PRESSURE INFLUENCE PARAMETER ',/,
319 & 5x,
' INI. TYPE = 3: DIRECT / INCREMENTAL FORMULATION ',/,
320 & 5x,
' INI. TYPE = 4: DIRECT / INCREMENTAL FORMULATION ',/,
321 & 5x,
' INI. TYPE = 5: TRIAXIALITY INFLUENCE PARAMETER ',/,
322 & 5x,
'ELEMENT SIZE SCALING TABLE IDENTIFIER . . . . . . . . =',i10,/,
323 & 5x,
' REFERENCE SIZE . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
324 & 5x,
' SCALE FACTOR . . . . . . . . . . . . . . . . . . . .=',1pg20
326 & 5x,
'> EVOLUTION PARAMETERS: ',/,
327 & 5x,
'DAMAGE EVOLUTION TYPE . . . . . . . . . . . . . . . . =',i10,/,
328 & 5x,
' = 1: PLASTIC DISPLACEMENT ',/,
329 & 5x,
' = 2: FRACTURE ENERGY ',/,
330 & 5x,
'DAMAGE EVOLUTION SHAPE . . . . . . . . . . . . . . . . =',i10,/,
331 & 5x,
' = 1: LINEAR ',/,
332 & 5x,
' = 2: EXPONENTIAL ',/,
333 & 5x,
'DAMAGE EVOLUTION COMBINATION . . . . . . . . . . . . . =',i10,/,
334 & 5x,
' = 1: MAXIMUM DAMAGE ',/,
335 & 5x,
' = 2: MULTIPLICATIVE ',/,
336 & 5x,
'PLASTIC DISPLACEMENT AT FAILURE . . . . . . . . . . . .=',1pg20.13/)
338 & 5x,
'> EVOLUTION PARAMETERS: ',/,
339 & 5x,
'DAMAGE EVOLUTION TYPE . . . . . . . . . . . . . . . . =',i10,/,
340 & 5x,
' = 1: PLASTIC DISPLACEMENT ',/,
341 & 5x,
' = 2: FRACTURE ENERGY ',/,
342 & 5x,
'DAMAGE EVOLUTION SHAPE . . . . . . . . . . . . . . . . =',i10,/,
343 & 5x,
' = 1: LINEAR ',/,
344 & 5x,
' = 2: EXPONENTIAL ',/,
345 & 5x,
'DAMAGE EVOLUTION COMBINATION . . . . . . . . . . . . . =',i10,/,
346 & 5x,
' = 1: MAXIMUM DAMAGE ',/,
347 & 5x,
' = 2: MULTIPLICATIVE ',/,
348 & 5x,
'PLASTIC DISPLACEMENT AT FAILURE . . . . . . . . . . . .=',1pg20.13/,
349 & 5x,
'EXPONENTIAL EVOLUTION PARAMETER . . . . . . . . . . . .=',1pg20.13/)
351 & 5x,
'> EVOLUTION PARAMETERS: ',/,
352 & 5x,
'DAMAGE EVOLUTION TYPE . . . . . . . . . . . . . . . . =',i10,/,
353 & 5x,
' = 1: PLASTIC DISPLACEMENT ',/,
354 & 5x,
' = 2: FRACTURE ENERGY ',/,
355 & 5x,
'DAMAGE EVOLUTION SHAPE . . . . . . . . . . . . . . . . =',i10,/,
356 & 5x,
' = 1: LINEAR ',/,
357 & 5x,
' = 2: EXPONENTIAL ',/,
358 & 5x,
'DAMAGE EVOLUTION COMBINATION . . . . . . . . . . . . . =',i10,/,
359 & 5x,
' = 1: MAXIMUM DAMAGE ',/,
360 & 5x,
' = 2: MULTIPLICATIVE ',/,
361 & 5x,
'FRACTURE ENERGY . . . . . . . . . . . . . . . . . . . .=',1pg20.13/)
363 & 5x,
' -------------------------------------------------------',//)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)