40 . PARMAT ,NUVAR ,IFUNC ,NFUNC ,MAXFUNC ,
41 . UNITAB ,MAT_ID ,TITR ,LSUBMODEL,MATPARAM )
70#include "implicit_f.inc"
79 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
80 INTEGER,
INTENT(INOUT) :: IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,
82 INTEGER,
INTENT(IN) ::
83 my_real,
INTENT(INOUT) :: PM(NPROPM),PARMAT(100),UPARAM(MAXUPARAM)
84 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
87 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
91 INTEGER :: NRATE,ILAW,IMASS,IDEL,,IORDER2,
93 my_real :: rho0,e,g,thick,gc1_ini,gc2_ini,gc1_inf,gc2_inf,ratg1,ratg2,
94 . fg1,fg2,siga1,siga2,sigb1,sigb2,rate1,rate2,unit_l,
alpha
95 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
99 is_encrypted = .false.
100 is_available = .false.
104 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
105 CALL hm_get_floatv(
'MAT_E' ,e ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'MAT_G' ,g ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv(
'MAT_THICK' ,thick ,is_available, lsubmodel, unitab)
108 CALL hm_get_intv (
'MAT_IMASS' ,imass ,is_available, lsubmodel)
109 CALL hm_get_intv (
'MAT_IDEL' ,idel ,is_available, lsubmodel)
110 CALL hm_get_intv (
'MAT_ICRIT' ,icrit ,is_available, lsubmodel)
113 CALL hm_get_floatv(
'MAT_GC1_inf' ,gc1_inf ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv(
'MAT_SRATG1' ,ratg1 ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'MAT_FG1' ,fg1 ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv(
'MAT_GC2_ini' ,gc2_ini ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'MAT_GC2_inf' ,gc2_inf ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_SRATG2' ,ratg2 ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT_FG2' ,fg2 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'MAT_SIGA1' ,siga1 ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT_SIGB1' ,sigb1 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'MAT_SRATE1' ,rate1 ,is_available, lsubmodel, unitab)
125 CALL hm_get_intv (
'MAT_ORDER1' ,iorder1 ,is_available, lsubmodel)
126 CALL hm_get_intv (
'MAT_FAIL1' ,ifail1 ,is_available
128 CALL hm_get_floatv(
'MAT_SIGA2' ,siga2 ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'MAT_SIGB2' ,sigb2 ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'MAT_SRATE2' ,rate2 ,is_available, lsubmodel, unitab)
131 CALL hm_get_intv (
'MAT_ORDER2' ,iorder2 ,is_available, lsubmodel)
132 CALL hm_get_intv (
'MAT_FAIL2' ,ifail2 ,is_available, lsubmodel)
140 IF (imass == 0) imass = 1
141 IF (idel == 0) idel = 1
142 IF (iorder1 == 0) iorder1 = 1
143 IF (iorder2 == 0) iorder2 = 1
144 IF (ifail1 == 0) ifail1 = 1
145 IF (ifail2 == 0) ifail2 = 1
146 IF (icrit == 0) icrit = 1
147 IF (fg1 == zero .or. gc1_ini == zero) ifail1 = 0
149 IF (thick == zero)
THEN
157 IF (ifail1 == 1)
THEN
158 IF (fg1 >= one - half*siga1**2 / (e * gc1_ini))
THEN
159 CALL ancmsg(msgid=1825,msgtype=msgwarning,anmode=aninfo_blind_1,
163 . r1 = half*siga1**2 / (e * gc1_ini) )
167 CALL ancmsg(msgid=1825,msgtype=msgwarning,anmode=aninfo_blind_1,
175 IF (ifail2 == 1)
THEN
176 IF (fg2 >= one - half*siga2**2 / (e * gc2_ini))
THEN
177 CALL ancmsg(msgid=1825,msgtype=msgwarning,anmode=aninfo_blind_1,
181 . r1 = half*siga2**2 / (e * gc2_ini) )
183 ELSE IF (ifail2 == 2)
THEN
185 CALL ancmsg(msgid=1825,msgtype=msgwarning,anmode=aninfo_blind_1,
197 uparam(1) = e / thick
198 uparam(2) = g / thick
223 parmat(1) =
max(e,g) / three
243 WRITE(iout,1100) trim(titr),mat_id,ilaw
245 IF (is_encrypted)
THEN
246 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
248 WRITE(iout,1200) rho0,e,g,thick,imass,idel,icrit,
249 . gc1_ini,gc1_inf,ratg1,fg1,
250 . gc2_ini,gc2_inf,ratg2,fg2,
251 . siga1,sigb1,rate1,iorder1,ifail1,
252 . siga2,sigb2,rate2,iorder2,ifail2
258 & 10x,
' MIXED MODE COHESIVE LAW 116 ',/,
259 & 10x,
' --------------------------- ',/)
262 & 5x,
'MATERIAL NUMBER . . . . . . . . . . . . . . .=',i10/,
263 & 5x,
'MATERIAL LAW. . . . . . . . . . . . . . . . .=',i10/)
265 & 5x,
'MATERIAL DENSITY. . . . . . . . . . . . . . .=',1pg20.13/,
266 & 5x,
'YOUNG MODULUS PER THICKNESS UNIT . . . . =',1pg20.13/,
267 & 5x,
'SHEAR MODULUS PER THICKNESS UNIT . . . . =',1pg20.13/,
268 & 5x,
'COHESIVE ELEMENT THICKNESS . . . . . . . =',1pg20.13/,
269 & 5x,
'MASS CALCULATION FLAG . . . . . . . . . . . .=',i10/,
270 & 5x,
' = 0 => USING VOLUME DENSITY '/,
271 & 5x,
' = 1 => USING SURFACE DENSITY '/,
272 & 5x,
'NB OF FAILING GAUSS POINTS TO DELETE ELEMENT =',i10/,
273 & 5x,
'ICRIT : YIELD AND DAMAGE INITIATION FLAG . . =',i10/,
274 & 5x,
'INITIAL ENERGY RELEASE RATE IN MOD I . . . . =',1pg20.13/,
275 & 5x,
'FINAL ENERGY RELEASE RATE IN MOD I . . . . =',1pg20.13/,
276 & 5x,
'REFERENCE STRAIN RATE FOR GC IN MOD I. . . . =',1pg20.13/,
277 & 5x,
'SHAPE FACTOR FOR GC AT FAIL IN MOD I . . . . =',1pg20.13/,
278 & 5x,
'INITIAL ENERGY RELEASE RATE IN MOD II . . . =',1pg20.13/,
279 & 5x,
'FINAL ENERGY RELEASE RATE IN MOD II . . . . =',1pg20.13/,
280 & 5x,
'REFERENCE STRAIN RATE FOR GC IN MOD II . . . =',1pg20.13/,
281 & 5x,
'SHAPE FACTOR FOR GC AT FAIL IN MOD II . . . =',1pg20.13/,
282 & 5x,
'STATIC YIELD STRESS TERM IN MODE I . . . . =',1pg20.13/,
283 & 5x,
'DYNAMIC YIELD STRESS TERM IN MODE I . . . . =',1pg20.13/,
284 & 5x,
'REFERENCE STRAIN RATE FOR YLD IN MODE I. . . =',1pg20.13/,
285 & 5x,'order of yield
FUNCTION in mode i .
',I10/,
286 & 5X,'failure criterion flag in mode i . . . . . =
',I10/,
287 & 5X,'static yield stress term in mode ii . . . . =
',1PG20.13/,
288 & 5X,'dynamic yield stress term in mode ii . . . . =
',1PG20.13/,
289 & 5X,'reference strain rate
for yld in mode ii . . =
',1PG20.13/,
290 & 5X,'order of yield function in mode ii . . . . . =
',I10/,
291 & 5X,'failure criterion flag in mode ii . . . . . =
',I10/)
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)