40 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
41 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
71#include "implicit_f.inc"
80 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
81 my_real,
INTENT(INOUT) :: PM(NPROPM),PARMAT(100),UPARAM(MAXUPARAM)
82 INTEGER,
INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
84 INTEGER,
INTENT(IN) :: MAT_ID
85 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
87 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
92 . e,nu,g,c1,epsmax,epsr1,epsr2,fisokin,rate(11),yfac(11),
93 . pscale,fac_l,fac_t,fac_m,fac_c,escale,einf,ce,asrate
94 INTEGER NRATE,J,I,IU,IFUNCE,ISRATE_LOC,MFUNC,OPTE,IPFUN
95 my_real :: RHO0, RHOR, PSCALE_UNIT
96 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
100 is_encrypted = .false.
101 is_available = .false.
112 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'MAT_E' ,e ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'MAT_EPST1' ,epsr1 ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_EPST2' ,epsr2 ,is_available, lsubmodel, unitab)
121 CALL hm_get_intv(
'NFUNC' ,nrate ,is_available, lsubmodel)
122 CALL hm_get_intv(
'Fsmooth' ,israte_loc ,is_available, lsubmodel)
123 CALL hm_get_floatv(
'MAT_HARD' ,fisokin ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'Fcut' ,asrate ,is_available, lsubmodel, unitab)
126 CALL hm_get_intv(
'Xr_fun' ,ipfun ,is_available, lsubmodel)
127 CALL hm_get_intv(
'fct_ID_k' ,ifunce ,is_available, lsubmodel)
128 CALL hm_get_floatv(
'MAT_FScale' ,pscale ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'E_R' ,einf ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'MAT_C1' ,ce ,is_available, lsubmodel, unitab)
132 CALL hm_get_intv(
'FUN_A1' ,ifunc(1) ,is_available, lsubmodel)
133 CALL hm_get_intv(
'FUN_B1' ,ifunc(2) ,is_available, lsubmodel)
134 CALL hm_get_intv(
'FUN_A2' ,ifunc(3) ,is_available, lsubmodel)
135 CALL hm_get_intv(
'FUN_B2' ,ifunc(4) ,is_available, lsubmodel)
136 CALL hm_get_intv(
'FUN_A3' ,ifunc(5) ,is_available, lsubmodel)
137 CALL hm_get_intv(
'FUN_B3' ,ifunc(6) ,is_available, lsubmodel)
138 CALL hm_get_intv(
'FUN_A4' ,ifunc(7) ,is_available, lsubmodel)
139 CALL hm_get_intv(
'FUN_B4' ,ifunc(8) ,is_available, lsubmodel)
140 CALL hm_get_intv(
'FUN_A5' ,ifunc(9) ,is_available, lsubmodel)
141 CALL hm_get_intv(
'FUN_B5' ,ifunc(10) ,is_available, lsubmodel)
143 CALL hm_get_floatv(
'MAT_ALPHA1' ,yfac(1) ,is_available, lsubmodel, unitab)
144 CALL hm_get_floatv(
'MAT_ALPHA2' ,yfac(2) ,is_available, lsubmodel, unitab)
145 CALL hm_get_floatv(
'MAT_ALPHA3' ,yfac(3) ,is_available, lsubmodel, unitab)
146 CALL hm_get_floatv(
'MAT_ALPHA4' ,yfac(4) ,is_available, lsubmodel, unitab)
147 CALL hm_get_floatv(
'MAT_ALPHA5' ,yfac(5) ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv(
'MAT_ALPHA6' ,yfac(6) ,is_available, lsubmodel, unitab)
149 CALL hm_get_floatv(
'MAT_ALPHA7' ,yfac(7) ,is_available, lsubmodel, unitab)
150 CALL hm_get_floatv(
'MAT_ALPHA8' ,yfac(8) ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv(
'MAT_ALPHA9' ,yfac(9) ,is_available, lsubmodel, unitab)
152 CALL hm_get_floatv(
'MAT_ALPHA0' ,yfac(10) ,is_available, lsubmodel, unitab)
154 CALL hm_get_floatv(
'MAT_EPSR1' ,rate(1) ,is_available, lsubmodel, unitab)
155 CALL hm_get_floatv(
'MAT_EPSR2' ,rate(2) ,is_available, lsubmodel, unitab)
156 CALL hm_get_floatv(
'MAT_EPSR3' ,rate(3) ,is_available, lsubmodel, unitab)
157 CALL hm_get_floatv(
'MAT_EPSR4' ,rate(4) ,is_available, lsubmodel, unitab)
158 CALL hm_get_floatv(
'MAT_EPSR5' ,rate(5) ,is_available, lsubmodel, unitab)
159 CALL hm_get_floatv(
'MAT_EPSR6' ,rate(6) ,is_available, lsubmodel, unitab)
160 CALL hm_get_floatv(
'MAT_EPSR7' ,rate(7) ,is_available, lsubmodel, unitab)
161 CALL hm_get_floatv(
'MAT_EPSR8' ,rate(8) ,is_available, lsubmodel, unitab)
162 CALL hm_get_floatv(
'MAT_EPSR9' ,rate(9) ,is_available, lsubmodel, unitab)
163 CALL hm_get_floatv(
'MAT_EPSR10' ,rate(10) ,is_available, lsubmodel, unitab)
165 CALL hm_get_floatv_dim(
'MAT_FScale' ,pscale_unit ,is_available, lsubmodel, unitab)
171 IF((epsr1 /= zero).AND.(epsr2 /= zero))
THEN
172 IF(epsr1 >= epsr2)
THEN
175 . anmode=aninfo_blind_1,
188 ELSEIF(nrate < 4)
THEN
199 ELSEIF (pscale == zero)
THEN
200 pscale = one*pscale_unit
207 IF(ifunc(i) == 0)
THEN
216 IF(rate(i) >= rate(i+1))
THEN
219 . anmode=aninfo_blind_1,
227 IF(yfac(i) == zero) yfac(i)=one*pscale_unit
231 IF(ifunc(i) == 0)
THEN
234 . anmode=aninfo_blind_1,
241 IF(nrate > 1 .AND. israte_loc == 0)
THEN
243 . msgtype=msgwarning,
244 . anmode=aninfo_blind_1,
255 ELSEIF(rate(1) == zero)
THEN
268 IF(rhor == zero)rhor=rho0
275 uparam(3)=e/(one-nu*nu)
276 uparam(4)=nu*uparam(3)
286 uparam(6+mfunc+j)=yfac(j)
289 IF(epsr1 == zero)epsr1=infinity
290 IF(epsr2 == zero)epsr2=two*infinity
291 uparam(6+2*mfunc+1)=epsmax
292 uparam(6+2*mfunc+2)=epsr1
293 uparam(6+2*mfunc+3)=epsr2
294 uparam(6+2*mfunc+4)=two*g
295 uparam(6+2*mfunc+5)=three*g
296 c1=e/three/(one-two*nu)
297 uparam(6+2*mfunc+6)=c1
298 uparam(6+2*mfunc+7)=c1 + four*g/three
299 uparam(6+2*mfunc+8)=fisokin
313 IF (ifunce > 0 )opte = 1
328 parmat(4) = israte_loc
329 IF(asrate == zero)asrate=infinity
334 parmat(17) = two*g/(c1+four_over_3*g)
343 WRITE(iout,1001) trim(titr),mat_id,60
346 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
348 WRITE(iout,1002) rho0
349 WRITE(iout,1100) e,nu,epsmax,epsr1,epsr2,fisokin,israte_loc,asrate
350 WRITE(iout,1200)(ifunc(j),yfac(j),rate(j),j=1,mfunc)
351 WRITE(iout,1300) ipfun,pscale, ifunce,einf,ce
358 & 5x,40h
tabulated elastic plastic law ,/,
359 & 5x,40h ----------------------------- ,//)
362 & 5x,
'MATERIAL NUMBER . . . . . . . . . . . . =',i10/,
363 & 5x,
'MATERIAL LAW. . . . . . . . . . . . . . =',i10/)
365 & 5x,
'INITIAL DENSITY . . . . . . . . . . . . =',1pg20.13/)
367 & 5x,
'YOUNG''S MODULUS. . . . . . . . . . . .=',1pg20.13/
368 & 5x,
'POISSON''S RATIO. . . . . . . . . . . .=',1pg20.13/
369 & 5x,
'MAXIMUM PLASTIC STRAIN . . . . . . . ..=',1pg20.13/
370 & 5x,
'TENSION FAILURE STRAIN 1 . . . . . . ..=',1pg20.13/
371 & 5x,
'TENSION FAILURE STRAIN 2 . . . . . . ..=',1pg20.13/
372 & 5x,
'ISO-KINEMATIC HARDENNING FACTOR. . . ..=',1pg20.13/
373 & 5x,
'SMOOTH STRAIN RATE OPTION. . . . . . ..=',i10/
374 & 5x,
'STRAIN RATE CUTTING FREQUENCY . . . . .=',1pg20.13/)
376 & 5x,
'YIELD STRESS FUNCTION NUMBER. . . . . .=',i10/
377 & 5x,
'YIELD SCALE FACTOR. . . . . . . . . . .=',1pg20.13/
378 & 5x,
'STRAIN RATE . . . . . . . . . . . . . .=',1pg20.13)
380 & 5x,
'PRESSURE DEPENDENT YIELD FUNCTION . . .=',i10/
381 & 5x,
'PRESSURE SCALE FACTOR. . . . . . . . . =',1pg20.13/
382 & 5x,
'YOUNG MODULUS SCALE FACTOR FUNCTION . . .=',i10/
383 & 5x,
'YOUNG MODULUS EINF . . . . . . . . . . . =',1pg20.13/
384 & 5x,
'PARAMETER CE . . . . . . . . . . . . . . =',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)