39 . MAT_ID ,FAIL_ID ,IRUPT ,IXFEM ,
40 . LSUBMODEL,UNITAB ,FAIL_TAG )
56#include "implicit_f.inc"
64 INTEGER ,
INTENT(IN) :: FAIL_ID
65 INTEGER ,
INTENT(IN) :: MAT_ID
66 INTEGER ,
INTENT(IN) :: IRUPT
67 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
68 TYPE (SUBMODEL_DATA),
INTENT(IN) :: LSUBMODEL(*)
69 INTEGER ,
INTENT(INOUT) :: IXFEM
70 TYPE (FAIL_PARAM_) ,
INTENT(INOUT) :: FAIL
71 TYPE (FAIL_TAG_) ,
INTENT(INOUT) :: FAIL_TAG
75 INTEGER :: IFAIL_SH,IMARGIN,IENG
76 INTEGER ,
PARAMETER :: NFUNC = 2
77 INTEGER ,
DIMENSION(NFUNC) :: IFUNC
78 my_real :: rani,dadv,fact_margin,fact_loosemetal,pthkf,fcut,
alpha
80 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
82 is_encrypted = .false.
83 is_available = .false.
92 fact_loosemetal = zep02
95 CALL hm_get_intv (
'fct_ID' ,ifunc(1) ,is_available,lsubmodel)
96 CALL hm_get_intv (
'Ifail_sh' ,ifail_sh ,is_available,lsubmodel)
97 CALL hm_get_intv (
'I_marg' ,imargin ,is_available,lsubmodel)
99 CALL hm_get_floatv (
'Rani' ,rani ,is_available,lsubmodel,unitab)
100 CALL hm_get_floatv (
'Dadv' ,dadv ,is_available,lsubmodel,unitab)
101 CALL hm_get_intv (
'Istrain' ,ieng ,is_available,lsubmodel)
102 CALL hm_get_intv (
'Ixfem' ,ixfem ,is_available,lsubmodel)
104 IF (imargin == 0) imargin = 1
105 IF (imargin > 1)
THEN
107 CALL hm_get_floatv (
'Factor_Marginal' ,fact_margin ,is_available,lsubmodel,unitab)
108 CALL hm_get_floatv (
'Factor_Loosemetal',fact_loosemetal,is_available,lsubmodel,unitab)
112 CALL hm_get_floatv (
'FCUT' ,fcut ,is_available,lsubmodel,unitab)
119 IF (ifunc(1) == 0)
CALL ancmsg(msgid=2001,msgtype=msgerror,anmode=aninfo_blind,
124 IF (fcut == zero) fcut = 10000.0d0*unitab%FAC_T_WORK
125 IF (
alpha > zero) fcut = zero
126 IF (ifail_sh == 0) ifail_sh = 1
127 IF (rani == 0) rani = one
128 IF (dadv ==zero)
THEN
129 IF (ifunc(2) == 0)
THEN
135 IF (ixfem /= 1 .AND. ixfem /= 2) ixfem = 0
137 IF (ifail_sh == 1)
THEN
139 ELSEIF (ifail_sh == 2)
THEN
141 ELSEIF (ifail_sh == 3)
THEN
143 ELSEIF (ifail_sh == 4)
THEN
149 fail%FAIL_ID = fail_id
162 ALLOCATE (fail%UPARAM(fail%NUPARAM))
163 ALLOCATE (fail%IPARAM(fail%NIPARAM))
164 ALLOCATE (fail%IFUNC (fail%NFUNC))
165 ALLOCATE (fail%TABLE (fail%NTABLE))
166 ALLOCATE (fail%MODE (fail%NMOD))
168 fail%IFUNC(1:nfunc) = ifunc(1:nfunc)
170 fail%UPARAM(1) = fact_margin
171 fail%UPARAM(2) = dadv
172 fail%UPARAM(3) = rani
173 fail%UPARAM(4) = fact_loosemetal
174 fail%UPARAM(5) = fcut
175 fail%UPARAM(6) =
alpha
177 fail%IPARAM(1) = ifail_sh
178 fail%IPARAM(2) = imargin
179 fail%IPARAM(3) = ieng
181 fail%MODE(1) =
"FLDF Damage factor"
182 fail%MODE(2) =
"FLDZ Failure zone factor"
184 fail%MODE(3) =
"Incremental Strains ratio Beta"
186 fail_tag%LF_DAMMX = 1 + fail%NMOD
191 IF (is_encrypted)
THEN
192 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
196 WRITE(iout, 1100) ifunc(1),rani,imargin,fact_margin,fact_loosemetal
197 WRITE(iout, 1600) ieng
198 IF (ieng > 1)
WRITE(iout, 1800) fcut,
alpha
199 IF (ifail_sh == 1)
THEN
201 ELSEIF (ifail_sh == 2)
THEN
203 ELSEIF (ifail_sh == 3)
THEN
205 ELSEIF (ifail_sh == 4)
THEN
210 WRITE(iout, 1110) ifunc(1),ifunc(2),dadv,rani,
211 & imargin,fact_margin,fact_loosemetal
212 WRITE(iout, 1600) ieng
213 IF (ieng > 1)
WRITE(iout, 1800) fcut,
alpha
219 & 5x,
'-----------------------------------------------------',/,
220 & 5x,
' FAILURE CRITERION : FORMING LIMIT DIAGRAM ',/,
221 & 5x,
'-----------------------------------------------------',/)
223 & 5x,
'FORMING LIMIT DIAGRAM FUNCTION ID . . . . . . . . . =',i10/,
224 & 5x,
'AVERAGE ANISOTROPY FACTOR (RANI). . . . . . . . . . =',1pg20.13/,
225 & 5x,
'MARGINAL VALUE FLAG (I_MARG). . . . . . . . . . . . =',i10/,
226 & 5x,
'FACTOR MARGINAL . . . . . . . . . . . . . . . . . . =',1pg20.13/,
227 & 5x,
'FACTOR LOOSEMETAL . . . . . . . . . . . . . . . . . =',1pg20.13//)
229 & 5x,
'INPUT/FORMULATION FLAG (ISTRAIN). . . . . . . . . . =',i10/,
230 & 5x,
' = 0: TRUE STRAIN (CLASSIC) INPUT ',/,
231 & 5x,
' = 1: ENGINEERING STRAIN INPUT FLAG ',/,
232 & 5x,
' = 2: NON-LINEAR PATH FORMULATION ',/)
234 & 5x,
' SHELL ELEMENT DELETION AFTER FAILURE',//)
236 & 5x,
' STRESS TENSOR IN SHELL LAYER SET TO ZERO AFTER FAILURE',//)
238 & 5x,
' ELEMENT IS DELETED ONLY WHEN MEMBRANE FAILS',//)
240 & 5x,
' SHELL FAILURE IS DEACTIVATED',//)
242 & 5x,
' SHELL ELEMENT CRACKING AFTER FAILURE',//)
244 & 5x,
'STRAIN RATIO FILTERING FREQUENCY (FCUT) . . . . . . =',1pg20.13/,
245 & 5x,
'STRAIN RATIO FILTERING WEIGHT (ALPHA) . . . . . . . =',1pg20.13//)
247 & 5x,
'-----------------------------------------------------',/,
248 & 5x,
' FAILURE CRITERION : XFEM FORMING LIMIT DIAGRAM ',/,
249 & 5x,
'-----------------------------------------------------',/)
251 & 5x,
'FORMING LIMIT DIAGRAM FUNCTION ID . . . . . . . . . =',i10/,
252 & 5x,
'CRACK ADVANCEMENT LIMIT DIAGRAM FUNCTION ID . . . . =',i10/,
253 & 5x,
'SCALE FACTOR FOR CRACK ADVANCEMENT (DADV) . . . . . =',1pg20.13/,
254 & 5x,
'AVERAGE ANISOTROPY FACTOR (RANI). . . . . . . . . . =',1pg20.13/,
255 & 5x,
'MARGINAL VALUE FLAG (I_MARG). . . . . . . . . . . . =',i10/,
256 & 5x,
'FACTOR MARGINAL . . . . . . . . . . . . . . . . . . =',1pg20.13/,
257 & 5x,
'FACTOR LOOSEMETAL . . . . . . . . . . . . . . . . . =',1pg20.13//)
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)