40 . UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,MAXFUNC ,
41 . NFUNC ,IFUNC ,MTAG ,PARMAT ,UNITAB ,
42 . PM ,LSUBMODEL,ISRATE ,MAT_ID ,TITR ,
56#include "implicit_f.inc"
65 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
66 INTEGER,
INTENT(IN) :: MAT_ID,MAXUPARAM,MAXFUNC
67 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: PM
68 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
69 INTEGER,
INTENT(INOUT) :: ISRATE,IFUNC(MAXFUNC)
70 INTEGER,
INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC
71 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
72 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
75 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
79 INTEGER I,J,K,ILAW,Ires,Ivisc,Ifail,Fct_SIG0,
80 . Fct_YOUN,Fct_TANG,Fct_FAIL
83 . rho0,young,nu,a,g,g2,lam,bulk,nnu,nnu1,fcut,dtmin,
84 . xscale_sig0,yscale_sig0,xscale_youn,yscale_youn,
85 . xscale_tang,xscale_fail,yscale_fail,
86 . xscale_unit,yscale_unit,a11,a12,tang
88 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
90 IS_ENCRYPTED = .false.
91 is_available = .false.
98 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available,lsubmodel,unitab)
100 CALL hm_get_floatv(
'MAT_E' ,young ,is_available,lsubmodel,unitab)
101 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available,lsubmodel,unitab)
102 CALL hm_get_intv (
'MAT_Ires' ,ires ,is_available,lsubmodel)
103 CALL hm_get_intv (
'MAT_Ivisc' ,ivisc ,is_available,lsubmodel)
104 CALL hm_get_floatv(
'Fcut' ,fcut ,is_available,lsubmodel,unitab)
105 CALL hm_get_floatv(
'TDEL' ,dtmin ,is_available,lsubmodel,unitab)
107 CALL hm_get_intv (
'Fct_SIG0' ,fct_sig0 ,is_available,lsubmodel)
108 CALL hm_get_floatv(
'Xscale_SIG0',xscale_sig0,is_available,lsubmodel,unitab)
111 xscale_sig0 = one * xscale_unit
113 CALL hm_get_floatv(
'Yscale_SIG0',yscale_sig0,is_available,lsubmodel,unitab)
114 IF ((fct_sig0 /= 0).AND.(yscale_sig0 == zero))
THEN
116 yscale_sig0 = one * yscale_unit
119 CALL hm_get_intv (
'Fct_YOUN' ,fct_youn ,is_available,lsubmodel)
120 CALL hm_get_floatv(
'Xscale_YOUN',xscale_youn,is_available,lsubmodel,unitab)
121 IF ((fct_youn /= 0).AND.(xscale_youn == zero))
THEN
123 xscale_youn = one * xscale_unit
125 CALL hm_get_floatv(
'Yscale_YOUN',yscale_youn,is_available,lsubmodel,unitab)
126 IF ((fct_youn /= 0).AND.(yscale_youn == zero))
THEN
128 yscale_youn = one * yscale_unit
131 CALL hm_get_intv (
'Fct_TANG' ,fct_tang ,is_available,lsubmodel)
132 CALL hm_get_floatv(
'Xscale_TANG',xscale_tang,is_available,lsubmodel,unitab)
133 IF ((fct_tang /= 0).AND.(xscale_tang == zero))
THEN
135 xscale_tang = one * xscale_unit
137 CALL hm_get_floatv(
'MAT_TANG' ,tang ,is_available,lsubmodel,unitab)
138 IF ((fct_tang /= 0).AND.(tang == zero))
THEN
140 tang = one * yscale_unit
143 CALL hm_get_intv (
'Fct_FAIL' ,fct_fail ,is_available,lsubmodel)
144 CALL hm_get_intv (
'MAT_Ifail' ,ifail ,is_available,lsubmodel)
145 CALL hm_get_floatv(
'Xscale_FAIL',xscale_fail,is_available,lsubmodel,unitab)
146 IF ((fct_fail /= 0).AND.(xscale_fail == zero))
THEN
148 xscale_fail = one * xscale_unit
150 CALL hm_get_floatv(
'Yscale_FAIL',yscale_fail,is_available,lsubmodel,unitab)
151 IF ((fct_fail /= 0).AND.(yscale_fail == zero))
THEN
153 yscale_fail = one * yscale_unit
160 g2 = young / (one + nu)
162 lam = g2 * nu /(one - two*nu)
163 bulk = third * young / (one - nu*two)
164 nnu = nu / (one - nu)
166 a11 = young / (one - nu*nu)
169 IF ((ires == 0).OR.(ires > 2)) ires = 2
171 ivisc =
min(
max(ivisc,0),1)
173 ifail =
min(
max(ifail,0),3)
175 IF ((fct_sig0 == 0).AND.(yscale_sig0 == zero))
THEN
178 . anmode=aninfo_blind_2,
183 IF ((ivisc == 1).AND.(fct_youn > 0))
THEN
185 . msgtype=msgwarning,
186 . anmode=aninfo_blind_2,
193 IF (nu < zero .OR. nu >= half)
THEN
196 . anmode=aninfo_blind_2,
202 IF (fcut == zero)
THEN
203 fcut = 10000.0d0*unitab%FAC_T_WORK
206 IF (dtmin == zero) dtmin = -infinity
242 uparam(16) = xscale_sig0
243 uparam(17) = yscale_sig0
244 uparam(18) = xscale_youn
245 uparam(19) = yscale_youn
246 uparam(20) = xscale_tang
248 uparam(22) = xscale_fail
249 uparam(23) = yscale_fail
268 pm(27) = sqrt((bulk + four_over_3*g)/rho0)
290 WRITE(iout,1000) trim(titr),mat_id
292 IF (is_encrypted)
THEN
293 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
295 WRITE(iout,1200) rho0
296 WRITE(iout,1300) young,nu
297 WRITE(iout,1350) ires
298 WRITE(iout,1360) ivisc
299 WRITE(iout,1370) ifail
301 WRITE(iout,1380) fcut
303 IF (fct_sig0 > 0)
THEN
304 WRITE(iout,1400) fct_sig0,xscale_sig0,yscale_sig0
306 WRITE(iout,1450) yscale_sig0
308 IF (fct_youn > 0)
THEN
309 WRITE(iout,1500) fct_youn,xscale_youn,yscale_youn
311 IF (fct_tang > 0)
THEN
312 WRITE(iout,1600) fct_tang,xscale_tang,tang
314 WRITE(iout,1650) tang
316 IF (fct_fail > 0)
THEN
317 WRITE(iout,1700) fct_fail,xscale_fail,yscale_fail
319 IF (dtmin > zero)
THEN
320 WRITE(iout,1800) dtmin
326 & 5x,
'MATERIAL NUMBER. . . . . . . . . . . . =',i10/,
327 & 5x,
'MATERIAL LAW . . . . . . . . . . . . . =',i10/)
329 &(5x,
'MATERIAL MODEL : RATE DEPENDENT PLASTICITY',/,
330 & 5x,
'------------------------------------------',/)
332 & 5x,
'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
334 & 5x,
'YOUNG MODULUS . . . . . . . . . . . . .=',1pg20.13/
335 & 5x,
'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/)
337 & 5x,
'RETURN MAPPING ALGORITHM FLAG . . . . .=',i3/
338 & 5x,
' IRES=1 NICE EXPLICIT'/
339 & 5x,
' IRES=2 NEWTON-ITERATION IMPLICIT (CUTTING PLANE)'/)
341 & 5x,
'VISCOSITY FORMULATION FLAG. . . . . . .=',i3/
342 & 5x,
' IVISC=0 SCALED YIELD STRESS FORMULATION'/
343 & 5x,
' IVISC=1 FULL VISCOPLASTIC FORMULATION'/)
345 & 5x,
'FAILURE CRITERION FLAG . . . . . . . .=',i3/
346 & 5x,
' IFAIL=0 MAXIMUM VON MISES STRESS'/
347 & 5x,
' IFAIL=1 MAXIMUM PLASTIC STRAIN'/
348 & 5x,
' IFAIL=2 MAX. PRINC STRESS + ABSOLUTE VALUE OF MIN. PRINC. STRESS'/
349 & 5x,
' IFAIL=3 MAXIMUM PRINCIPAL STRESS'/)
351 & 5x,
'STRAIN-RATE FILTERING CUTOFF FREQUENCY.=',1pg20.13/)
353 & 5x,
'INITIAL YIELD STRESS FUNCTION ID. . . .=',i10/
354 & 5x,
'STRAIN-RATE SCALE FACTOR. . . . . . . .=',1pg20.13/
355 & 5x,
'YIELD STRESS SCALE FACTOR . . . . . . .=',1pg20.13/)
357 & 5x,
'CONSTANT INITIAL YIELD STRESS . . . . .=',1pg20.13/)
359 & 5x,
'YOUNG MODULUS FUNCTION ID . . . . . . .=',i10/
360 & 5x,
'STRAIN-RATE SCALE FACTOR. . . . . . . .=',1pg20.13/
361 & 5x,
'YOUNG MODULUS SCALE FACTOR . . . . . .=',1pg20.13/)
363 & 5x,
'TANGENT MODULUS FUNCTION ID . . . . . .=',i10/
364 & 5x,
'STRAIN-RATE SCALE FACTOR. . . . . . . .=',1pg20.13/
365 & 5x,
'TANGENT MODULUS SCALE FACTOR . . . . .=',1pg20.13/)
367 & 5x,
'CONSTANT TANGENT MODULUS . . . . . . .=',1pg20.13/)
369 & 5x,
'FAILURE CRITERION STRESS FUNCTION ID .=',i10/
370 & 5x,
'STRAIN-RATE SCALE FACTOR. . . . . . . .=',1pg20.13/
371 & 5x,
'ORDINATE SCALE FACTOR . . . . . . . . .=',1pg20.13/)
373 & 5x,
'MINIMUM TIMESTEP FOR ELEMENT DELETION .=',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)