44 . MAXFUNC ,MFUNC , PARMAT ,UNITAB ,ID ,
45 . MTAG ,TITR , LSUBMODEL,PM ,MATPARAM )
75#include "implicit_f.inc"
84 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
85 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: PM
86 my_real,
DIMENSION(100) ,
INTENT(INOUT) :: parmat
87 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
88 INTEGER,
DIMENSION(MAXFUNC) ,
INTENT(INOUT) :: IFUNC
89 INTEGER,
INTENT(INOUT) :: MFUNC,NUPARAM,NUVAR
91 INTEGER,
INTENT(IN) :: ID,MAXFUNC,MAXUPARAM
92 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) ::
94 TYPE() ,
INTENT(INOUT) :: MATPARAM
98 INTEGER :: NBMAT, MAT_ID ! Number of declared materials
99 INTEGER :: I,J,IU,NC,NT,VP,ILAW,ISRATE,IRATE
100 my_real :: e,ec,nu,g,cp,epsp0,sigy,rho0,rhor,
101 . fisokin,yfac_unit,fcut,pc,pt,c1,rpct
102 my_real :: rate(maxfunc+1),yfac(maxfunc+1)
103 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
108 is_encrypted = .false.
109 is_available = .false.
124 CALL hm_get_floatv('mat_rho
' ,RHO0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
125 CALL HM_GET_FLOATV('refer_rho
' ,RHOR ,IS_AVAILABLE, LSUBMODEL, UNITAB)
128 CALL HM_GET_FLOATV('mat_e
' ,E ,IS_AVAILABLE, LSUBMODEL, UNITAB)
129 CALL HM_GET_FLOATV('mat_nu
' ,NU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
130 CALL HM_GET_FLOATV('mat_hard
' ,FISOKIN ,IS_AVAILABLE, LSUBMODEL, UNITAB)
131 CALL HM_GET_FLOATV('mat_asrate
' ,FCUT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
132 CALL HM_GET_INTV ('fsmooth
' ,ISRATE ,IS_AVAILABLE,LSUBMODEL)
133 CALL HM_GET_INTV ('israte
' ,IRATE ,IS_AVAILABLE,LSUBMODEL)
136 CALL HM_GET_FLOATV('mat_pc
' ,PC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
137 CALL HM_GET_FLOATV('mat_pt
' ,PT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
138 CALL HM_GET_FLOATV('mat_ec
' ,EC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
139 CALL HM_GET_FLOATV('mat_rpct
' ,RPCT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
142 IF(IRATE == 0) IRATE = 1
145 CALL HM_GET_INTV ('fun_a1
' ,IFUNC(1) ,IS_AVAILABLE,LSUBMODEL)
146 CALL HM_GET_INTV ('fun_a2
' ,IFUNC(2) ,IS_AVAILABLE,LSUBMODEL)
147 CALL HM_GET_FLOATV('fscale11
' ,YFAC(1) ,IS_AVAILABLE, LSUBMODEL, UNITAB)
148 CALL HM_GET_FLOATV('fscale22
' ,YFAC(2) ,IS_AVAILABLE, LSUBMODEL, UNITAB)
151 CALL HM_GET_FLOATV_DIM('fscale11
' ,YFAC_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
153 IF(YFAC(1) == ZERO) YFAC(1)= YFAC_UNIT
154 CALL HM_GET_FLOATV_DIM('fscale22
' ,YFAC_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
155 IF(YFAC(2) == ZERO) YFAC(2)= YFAC_UNIT
160 CALL HM_GET_FLOATV('epsilon_0
' ,EPSP0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
161 CALL HM_GET_FLOATV('mat_c0
' ,CP ,IS_AVAILABLE, LSUBMODEL, UNITAB)
162 CALL HM_GET_FLOATV('sigma_r
' ,SIGY ,IS_AVAILABLE, LSUBMODEL, UNITAB)
163 CALL HM_GET_INTV ('vp
' ,VP ,IS_AVAILABLE,LSUBMODEL)
165.AND.
IF(EPSP0 == ZERO CP == ZERO)EPSP0 = EP20
166 IF(EPSP0 == ZERO) EPSP0 = ONE !!!
169 ELSEIF(IRATE == 3) THEN
170 CALL HM_GET_INTV ('fun_b1
' ,IFUNC(3) ,IS_AVAILABLE,LSUBMODEL)
171 CALL HM_GET_INTV ('fun_b2
' ,IFUNC(4) ,IS_AVAILABLE,LSUBMODEL)
172 CALL HM_GET_FLOATV('fscale33
' ,YFAC(3) ,IS_AVAILABLE, LSUBMODEL, UNITAB)
173 CALL HM_GET_FLOATV('fscale12
' ,YFAC(4) ,IS_AVAILABLE, LSUBMODEL, UNITAB)
179 CALL HM_GET_FLOATV_DIM('fscale33
' ,YFAC_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
180 IF(YFAC(3) == ZERO) YFAC(3)= YFAC_UNIT
181 CALL HM_GET_FLOATV_DIM('fscale12
' ,YFAC_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
182 IF(YFAC(4) == ZERO) YFAC(4)= YFAC_UNIT
184 ELSEIF(IRATE == 4) THEN
185 CALL HM_GET_INTV ('nfunc
' ,NC ,IS_AVAILABLE,LSUBMODEL)
186 CALL HM_GET_INTV ('tfunc
' ,NT ,IS_AVAILABLE,LSUBMODEL)
188 CALL HM_GET_INT_ARRAY_INDEX('abg_ipt
' ,IFUNC(I) ,I,IS_AVAILABLE, LSUBMODEL)
189 CALL HM_GET_FLOAT_ARRAY_INDEX('fp1
' ,YFAC(I) ,I,IS_AVAILABLE, LSUBMODEL, UNITAB)
190 CALL HM_GET_FLOAT_ARRAY_INDEX('k_a1
' ,RATE(I) ,I,IS_AVAILABLE, LSUBMODEL, UNITAB)
192 CALL HM_GET_FLOAT_ARRAY_INDEX_DIM('fp1
' ,YFAC_UNIT ,I,IS_AVAILABLE, LSUBMODEL, UNITAB)
193 IF(YFAC(I) == ZERO) YFAC(I) = YFAC_UNIT
202 ELSEIF(RATE(1) /= ZERO)THEN
213 CALL HM_GET_INT_ARRAY_INDEX('abg_ipdel
',IFUNC(NC + I) ,I,IS_AVAILABLE, LSUBMODEL)
214 CALL HM_GET_FLOAT_ARRAY_INDEX('fp2
' ,YFAC(NC + I) ,I,IS_AVAILABLE, LSUBMODEL, UNITAB)
215 CALL HM_GET_FLOAT_ARRAY_INDEX('k_b1
' ,RATE(NC + I) ,I,IS_AVAILABLE, LSUBMODEL, UNITAB)
217 CALL HM_GET_FLOAT_ARRAY_INDEX_DIM('fp2
' ,YFAC_UNIT ,I,IS_AVAILABLE, LSUBMODEL, UNITAB)
218 IF(YFAC(NC + I) == ZERO) YFAC(NC + I) = YFAC_UNIT
222 IFUNC(NC + 2) = IFUNC(NC + 1)
225 YFAC(NC + 2) = YFAC(NC + 1)
226 ELSEIF(RATE(NC + 1) /= ZERO)THEN
229 IFUNC(NC + J + 1) = IFUNC(NC + J)
230 RATE(NC + J + 1) = RATE(NC + J)
231 YFAC(NC + J + 1) = YFAC(NC + J)
238 IF(RATE(I) > RATE(I+1))THEN
239 CALL ANCMSG(MSGID=478,
241 . ANMODE=ANINFO_BLIND_1,
250 IF(RATE(NC+I) >= RATE(NC+I+1))THEN
251 CALL ANCMSG(MSGID=478,
253 . ANMODE=ANINFO_BLIND_1,
266 IF(RHOR==ZERO)RHOR=RHO0
271 IF(IFUNC(I) == 0)THEN
272 CALL ANCMSG(MSGID=126,
281 IF(NU == HALF)NU=ZEP499
282.AND.
IF(CP == ZERO IRATE == 1) CP = ONE
283 IF(IRATE == 1 ) CP = ONE/CP
284 G = HALF*E/( ONE + NU)
289 UPARAM(3) = E/(ONE - NU*NU)
290 UPARAM(4) = NU*UPARAM(3)
301 UPARAM(13+I) = YFAC(I)
302 UPARAM(13+I+MFUNC) = RATE(I)
305 UPARAM(14 + 2*MFUNC) = SIGY
306 UPARAM(15 + 2*MFUNC) = VP
307 UPARAM(16 + 2*MFUNC) = EC
308 UPARAM(17 + 2*MFUNC) = RPCT
309 NUPARAM = 17 + 2*MFUNC
311 C1=E/THREE/(ONE - TWO*NU)
326 ! Properties compatibility
327 CALL INIT_MAT_KEYWORD(MATPARAM,"SHELL_ISOTROPIC")
328 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
329 CALL INIT_MAT_KEYWORD(MATPARAM,"SPH")
332 WRITE(IOUT,1001) TRIM(TITR),ID,ILAW
335 WRITE(IOUT,'(5x,a,//)
')'confidential data
'
337 WRITE(IOUT,1002) RHO0
338 WRITE(IOUT,1100) E,EC,NU,PC,PT,RPCT,FISOKIN,ISRATE,FCUT
339 WRITE(IOUT,1200) IRATE
341 WRITE(IOUT,1300) IFUNC(1),YFAC(1)
342 write(IOUT,1400) IFUNC(2),YFAC(2)
343 write(IOUT,1500) EPSP0
349 write(IOUT,1530) VP,SIGY
350 ELSEIF(IRATE == 3) THEN
351 WRITE(IOUT,1300) IFUNC(1),YFAC(1)
352 write(IOUT,1400) IFUNC(2),YFAC(2)
353 write(IOUT,1600) IFUNC(3),YFAC(3)
354 WRITE(IOUT,1700) IFUNC(4),YFAC(4)
357 WRITE(IOUT,2000) IFUNC(I),YFAC(I),RATE(I)
360 WRITE(IOUT,3000) IFUNC(I+NC),YFAC(I+NC),RATE(I+NC)
367 & 5X,' tabulated tension-compression plastic law
',/,
368 & 5X,' -----------------------------
' ,//)
371 & 5X,'material number. . . . . . . . . . . . =
',I10/,
372 & 5X,'material law . . . . . . . . . . . . . =
',I10/)
374 & 5X,'initial density. . . . . . . . . . . . =
',1PG20.13/)
376 & 5X,'young
''s modulus. . . . . . . . . . . . .=
',1PG20.13/
377 & 5X,'young
''s modulus in compression . . . . .=
',1PG20.13/
378 & 5X,'poisson
''s ratio. . . . . . . . . . . . .=
',1PG20.13/
379 & 5X,'compression mean stress. . . . . . . . .=
',1PG20.13/
380 & 5X,'traction mean stress . . . . . . . . . .=
',1PG20.13/
381 & 5X,'fraction of mean stresses . . . . . . . .=
',1PG20.13/
382 & 5X,'iso-kinematic hardenning factor . . . . .=
',1PG20.13/
383 & 5X,'smooth strain rate option . . . . . . . .=
',I10/
384 & 5X,'strain rate cutting frequency . . . . . .=
',1PG20.13/)
386 & 5X,'strain rate formulation option . . . . .=
', I10/)
388 & 5X,'compression yield stress
FUNCTION number.=
',I10/
389 & 5X,'yield scale factor. . . . . . . . . . . .=
',1PG20.13)
391 & 5X,'traction yield stress function number . .=',i10/
392 & 5x,
'YIELD SCALE FACTOR. . . . . . . . . . . .='
394 & 5x,
'REFERENCE STRAIN RATE . . . . . . . . . .=',1pg20.13)
396 & 5x,
'STRAIN RATE PARAMETER 1/C . . . . . . . .=',1pg20.13)
398 & 5x,
'STRAIN RATE PARAMETER C . . . . . . . . .=',1pg20.13)
400 & 5x,
'OPTIONAL STRAIN RATE EFFECT : . . . . . .=',i10/,
401 & 5x,
' 0 : STRAIN RATE EFFECT IS ACTIVATED ',/,
402 & 5x,
' 1 : VISCPLASTIC OPTION IS ACTIVATED ',/,
403 & 5x,
'OPTIONAL INITIAL YIELD STRESS . . . . . .=',1pg20.13/)
406 .
'COMPRESSION STRAIN RATE SCALING EFFECT FUNCTION NUMBER .=',i10/
407 & 5x,
'SCALE FACTOR. . . . . . . . . . . . . . .=',1pg20.13)
411 .
'TRACTION STRAIN RATE SCALING EFFECT FUNCTION NUMBER . . .=',i10/
412 & 5x,
'SCALE FACTOR. . . . . . . . . . . . . . .=',1pg20.13)
414 & 5x,
'COMPRESSION YIELD STRESS FUNCTION NUMBER.=',i10/
415 & 5x,
' YIELD SCALE FACTOR. . . . . .=',1pg20.13/
416 & 5x,
'STRAIN RATE. . . . . . . . . .=',1pg20.13)
418 & 5x,
'TRACTION YIELD STRESS FUNCTION NUMBER . .=',i10/
419 & 5x,
'YIELD SCALE FACTOR. . . . . . . . . . . .=',1pg20.13/
420 & 5x,
'STRAIN RATE . . . . . . . . . . . . . . .=',1pg20.13)
subroutine hm_read_mat66(uparam, maxuparam, nuparam, nuvar, ifunc, maxfunc, mfunc, parmat, unitab, id, mtag, titr, lsubmodel, pm, matparam)
subroutine tabulated(iflag, nel, pm, off, eint, mu, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, npf, tf)