39 . MTAG ,PARMAT ,UNITAB ,PM ,LSUBMODEL,
40 . ISRATE ,MAT_ID ,TITR ,MATPARAM )
69#include "implicit_f.inc"
78 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
79 INTEGER,
INTENT(IN) :: MAT_ID
80 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
81 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
82 INTEGER,
INTENT(INOUT) :: ISRATE
83 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
86 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
91 my_real :: RHO0,RHOR,YOUNG,NU,CA,CB,CN,MU,SIGM,CC,EPS0,G,C1,
92 . e1mn2,en1n2,sdsp,epst1,epsm1,epst2,epsm2,
93 . dmax1,dmax2,epsf1,epsf2,fcut
94 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
96 is_encrypted = .false.
97 is_available = .false.
104 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
105 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv(
'MAT_E' ,young ,is_available, lsubmodel, unitab
108 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab
110 CALL hm_get_floatv(
'MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv(
'MAT_BETA' ,cb ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv(
'MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'MAT_SRC' ,cc ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT_SRP' ,eps0 ,is_available, lsubmodel, unitab)
117 CALL hm_get_intv (
'STRFLAG' ,icc ,is_available,lsubmodel)
118 CALL hm_get_intv (
'Fsmooth' ,israte ,is_available,lsubmodel)
119 CALL hm_get_floatv(
'Fcut' ,fcut ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_EPST1' ,epst1 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'MAT_EPSM1' ,epsm1 ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT_DAMAGE' ,dmax1 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'MAT_EPSF1' ,epsf1 ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'MAT_EPST2' ,epst2 ,is_available, lsubmodel
127 CALL hm_get_floatv(
'MAT_EPSM2' ,epsm2 ,is_available, lsubmodel
128 CALL hm_get_floatv(
'MAT_DAMAGE2',dmax2 ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'MAT_EPSF2' ,epsf2 ,is_available, lsubmodel, unitab)
131 IF (israte == 0 .AND. fcut /= zero) israte = 1
132 IF (fcut == zero) fcut = ep20
133 IF (nu >= half) nu = zep499
134 IF (icc == 0) icc = 1
135 IF (ca == zero) ca = ep20
136 IF (cn == zero) cn = one
137 IF (sigm == zero) sigm = ep20
138 IF (cc == zero) eps0 = one
139 IF (epst1 == zero) epst1 = ep20
140 IF (epsm1 == zero) epsm1 = onep1*ep20
141 IF (dmax1 == zero) dmax1 = zep999
142 IF (epst2 == zero) epst2 = ep20
143 IF (epsm2 == zero) epsm2 = onep1*ep20
144 IF (dmax2 == zero) dmax2 = zep999
145 IF (epsf1 == zero) epsf1 = onep2*ep20
146 IF (epsf2 == zero) epsf2 = onep2*ep20
148 g = half*young/(one + nu)
149 c1 = young/(three*(one - two*nu))
150 e1mn2 = young/(one-nu**2)
152 sdsp = sqrt(young/
max(rho0,em20))
154 IF (mu == zero) mu = fiveem2
189 pm(52) = onep414*mu*pm(1)*sdsp
219 WRITE(iout,1000) trim(titr),mat_id,27
221 IF (is_encrypted)
THEN
222 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
224 WRITE(iout,1200) rho0
225 WRITE(iout,1300) young,nu,g
226 WRITE(iout,1400) ca,cb,cn,sigm
227 WRITE(iout,1600) cc,eps0,icc,israte,fcut
228 WRITE(iout,1700) epst1,epsm1,dmax1,epsf1
229 WRITE(iout,1800) epst2,epsm2,dmax2,epsf2
243 IF (eps0 <= zero)
THEN
250 IF (epsm1 <= epst1)
THEN
257 IF (epsm2 <= epst2)
THEN
264 IF (dmax1 >= one .OR. dmax1 < zero)
THEN
271 IF (dmax2 >= one .OR. dmax2 < zero)
THEN
283 & 5x,
'MATERIAL NUMBER. . . . . . . . . . . . =',i10/,
284 & 5x,
'MATERIAL LAW . . . . . . . . . . . . . =',i10/)
286 & 5x,
' ELASTIC PLASTIC BRITTLE MATERIAL '/,
287 & 5x,
' -------------------------------- '//)
289 & 5x,
'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
291 & 5x,
'YOUNG MODULUS . . . . . . . . . . . .=',1pg20.13/,
292 & 5x,
'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/,
293 & 5x,'shear modulus . . . . . . . . . . . . .=
',1PG20.13//)
295 & 5X,'yield coefficient ca. . . . . . . . . .=
',1PG20.13/,
296 & 5X,'yield coefficient cb. . . . . . . . . .=
',1PG20.13/,
297 & 5X,'yield coefficient cn. . . . . . . . . .=
',1PG20.13/,
298 & 5X,'sig-
max . . . . . . . . . . . . . . . .=
',1PG20.13//)
300 & 5X,'strain rate coefficient cc. . . . . . .=
',1PG20.13/,
301 & 5X,'reference strain rate . . . . . . . . .=
',1PG20.13/,
302 & 5X,'flag
for strain rate on sig-
max . . . .=
',I10//,
303 & 5X,'smooth strain rate option . . . . . . .=
',I10/,
304 & 5X,'strain rate cutting frequency . . . . .=
',1PG20.13/)
306 & 5X,'tensile failure strain dir-1. . . . . .=
',1PG20.13/,
307 & 5X,'maximum tensile strain dir-1. . . . . .=
',1PG20.13/,
308 & 5X,'maximum damage dir-1. . . . . . . . . .=
',1PG20.13/,
309 & 5X,'element rupture tensile strain dir-1. .=
',1PG20.13/)
311 & 5X,'tensile failure strain dir-2. . . . . .=
',1PG20.13/,
312 & 5X,'maximum tensile strain dir-2. . . . . .=
',1PG20.13/,
313 & 5X,'maximum damage dir-2. . . . . . . . . .=
',1PG20.13/,
314 & 5X,'element rupture tensile strain dir-2. .=
',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)