43
44
45
46 USE fail_param_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "units_c.inc"
59
60
61
62 INTEGER ,INTENT(IN) :: FAIL_ID
63 INTEGER ,INTENT(IN) :: MAT_ID
64 INTEGER ,INTENT(IN) :: IRUPT
65 CHARACTER ,INTENT(IN) :: TITR*500
66 TYPE(UNIT_TYPE_) ,INTENT(IN) :: UNITAB
67 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
68 TYPE(FAIL_PARAM_) ,INTENT(INOUT) :: FAIL
69
70
71
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
79
80 is_encrypted = .false.
81 is_available = .false.
82
83
84
86
87
88
89
90
91
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)
98 IF (ilen == 2) THEN
100 . msgtype=msginfo,
101 . anmode=aninfo_blind,
102 . i1=mat_id,
103 . c1=titr)
104 ENDIF
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)
111
112
113
114 ALLOCATE(initype(ninievo),evotype(ninievo),evoshap(ninievo),comptyp(ninievo))
115 ALLOCATE(tab_id(ninievo) ,sr_ref(ninievo) ,fscale(ninievo) ,ini_p1(ninievo))
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
132
133 DO j = 1, ninievo
134
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
147
149 IF (tab_id(j) == 0) THEN
150 CALL ancmsg(msgid=2088, msgtype=msgerror, anmode=aninfo_blind,
151 . i1=mat_id,
152 . i2=j)
153 ENDIF
155 IF (sr_ref(j) == zero) THEN
157 sr_ref(j) = one*rate_unit
158 ENDIF
160 IF (fscale(j) == zero) fscale(j) = one
162
165 IF (el_ref(j) == zero) THEN
167 el_ref(j) = one*length_unit
168 ENDIF
170 IF (elscal(j) == zero) elscal(j) = one
171
173 IF (evotype(j) == 1 .AND. disp(j) == zero) THEN
174 CALL ancmsg(msgid=2089, msgtype=msgerror, anmode=aninfo_blind,
175 . i1=mat_id,
176 . i2=j)
177 ENDIF
181 IF (evotype(j) == 2 .AND. ener(j) == zero) THEN
182 CALL ancmsg(msgid=2090, msgtype=msgerror, anmode=aninfo_blind,
183 . i1=mat_id,
184 . i2=j)
185 ENDIF
186 ENDDO
187
188
189
190
191 ntable = ninievo*2
192
193 nuvar = 2 + 3*ninievo
194
195 nuparam = 5 + ninievo*14
196
197 fail%KEYWORD = 'INIEVO'
198 fail%IRUPT = irupt
199 fail%FAIL_ID = fail_id
200 fail%NUPARAM = nuparam
201 fail%NIPARAM = 0
202 fail%NUVAR = nuvar
203 fail%NFUNC = 0
204 fail%NTABLE = ntable
205 fail%NMOD = 0
206 fail%PTHK = pthk
207
208 ALLOCATE (fail%UPARAM(fail%NUPARAM))
209 ALLOCATE (fail%IPARAM(fail%NIPARAM))
210 ALLOCATE (fail%IFUNC (fail%NFUNC))
211 ALLOCATE (fail%TABLE (fail%NTABLE))
212
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
218
219 fail%TABLE(1:ninievo) = tab_id(1:ninievo)
220 fail%TABLE(ninievo+1:ninievo*2) = tab_el(1:ninievo)
221
222 DO j = 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)
237 ENDDO
238
239
240
241 IF (is_encrypted) THEN
242 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
243 ELSE
244 WRITE(iout,1000)
245 WRITE(iout,1100) ninievo,ishear,ilen
246 WRITE(iout,1200) failip,pthk
247 DO j = 1,ninievo
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),
253 . disp(j)
254 ELSEIF (evoshap(j) == 2) THEN
255 WRITE (iout,1500) evotype(j),evoshap(j),comptyp(j),
257 ENDIF
258 ELSEIF (evotype(j) == 2) THEN
259 WRITE (iout,1600) evotype(j),evoshap(j),comptyp(j),
260 . ener(j)
261 ENDIF
262 ENDDO
263 WRITE(iout,2000)
264 ENDIF
265
266
267
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)
282
283 1000 FORMAT(
284 & 5x,' ---------------------------------------------------- ',/
285 & 5x,' FAILURE CRITERION : INIEVO ',/,
286 & 5x,' ---------------------------------------------------- ',/)
287 1100 FORMAT(
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)',/)
296 1200 FORMAT(
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 ',/)
302 1300 FORMAT(
303 & 5x,'|| INIEVO CRITERION NUMBER #',i3,/,
304 & 5x,' ------------------------------------------------- ',/,
305 & 5x,'> INITIATION PARAMETERS: ',/,
306 & 5x,'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.13/,
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.13/)
325 1400 FORMAT(
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/)
337 1500 FORMAT(
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/)
350 1600 FORMAT(
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/)
362 2000 FORMAT(
363 & 5x,' -------------------------------------------------------',//)
364
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
subroutine hm_get_float_array_index_dim(name, dim_fac, index, is_available, lsubmodel, unitab)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
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)