39 . NUVAR ,NVARTMP ,NUMTABL ,ITABLE ,PARMAT ,
40 . MATPARAM ,PM ,MAT_ID ,TITR ,ISRATE ,
70#include "implicit_f.inc"
79 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
80 INTEGER ,
INTENT(IN ) :: MAXUPARAM,MAXTABL,MAT_ID
81 INTEGER ,
INTENT(INOUT) :: NUMTABL,NUPARAM,NUVAR,NVARTMP
82 INTEGER ,
DIMENSION(MAXTABL) ,
INTENT(INOUT) ::
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 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
92 INTEGER :: I,ILAW,YTAB_ID,ISRATE,IFORM,ITRX,IDAM,NDIM_YLD
93 my_real :: RHO0,RHOR,E,NU,Y0,Q,B,H,G,,C11,C12,EPSPMIN,EPSPMAX,SSP,
94 . fcut,a1f,a2f,a1h,a2h,as,cc,d1c,d2c,d1f,d2f,d_trx,d_jc,exp_n,
95 . xscale,yscale,yscale_unit,unit_l,xscale_unit,thick
98 is_encrypted = .false.
99 is_available = .false.
106 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'MAT_E' ,e ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
111 CALL hm_get_intv (
'MAT_IFORM' ,iform ,is_available, lsubmodel)
112 CALL hm_get_intv (
'MAT_ITRX' ,itrx ,is_available, lsubmodel)
113 CALL hm_get_intv (
'MAT_IDAM' ,idam ,is_available, lsubmodel)
114 CALL hm_get_floatv(
'MAT_THICK' ,thick ,is_available, lsubmodel, unitab)
116 CALL hm_get_intv (
'MAT_TAB_ID',ytab_id ,is_available,lsubmodel)
117 CALL hm_get_floatv(
'MAT_Xscale',xscale ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'MAT_Yscale',yscale ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT_TAU' ,y0 ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_Q' ,q ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'MAT_B' ,b ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT_H' ,h ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv(
'MAT_AF1' ,a1f ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'MAT_AF2' ,a2f ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'MAT_AH1' ,a1h ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT_AH2' ,a2h ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'MAT_AS' ,as ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'MAT_CC' ,cc ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv(
'MAT_GAM0' ,epspmin ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'MAT_GAMF' ,epspmax ,is_available, lsubmodel, unitab)
135 CALL hm_get_floatv(
'MAT_D1C' ,d1c ,is_available, lsubmodel, unitab)
136 CALL hm_get_floatv(
'MAT_D2C' ,d2c ,is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'MAT_D1F' ,d1f ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'MAT_D2F' ,d2f ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv('d_trx
' ,D_TRX ,IS_AVAILABLE, LSUBMODEL, UNITAB)
141 CALL HM_GET_FLOATV('d_jc
' ,D_JC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
142 CALL HM_GET_FLOATV('mat_exp
' ,EXP_N ,IS_AVAILABLE, LSUBMODEL, UNITAB)
145 G = E * HALF / (ONE + NU)
146 BULK = E * THIRD / (ONE - TWO*NU)
147 C11 = E * (ONE-NU) /((ONE + NU)*(ONE - TWO*NU))
148 C12 = C11 * NU/(ONE - NU)
149 SSP = SQRT((BULK + FOUR_OVER_3*G) / RHO0) ! sound speed estimation
156 FCUT = 1000.0D0 * UNITAB%FAC_T_WORK
158 IF (EXP_N == ZERO) EXP_N = ONE
159 IF (IFORM == 0) IFORM = 1
160 IF (ITRX == 0) ITRX = 2
161 IF (IDAM == 0) IDAM = 2
162 IF (XSCALE == ZERO) THEN
163 CALL HM_GET_FLOATV_DIM('mat_xscale
' ,XSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
164 XSCALE = ONE * XSCALE_UNIT
166 IF (YSCALE == ZERO) THEN
167 CALL HM_GET_FLOATV_DIM('mat_yscale
' ,YSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
168 YSCALE = ONE * YSCALE_UNIT
170 IF (THICK == ZERO) THEN
171 CALL HM_GET_FLOATV_DIM('mat_thick
' ,UNIT_L ,IS_AVAILABLE, LSUBMODEL, UNITAB)
183 IF (YTAB_ID > 0) THEN ! analytical yld parameters are not used with tabulated input
225 UPARAM(30) = ONE / XSCALE
230 UPARAM(34) = THICK ! For connect element (type43)
231 ITABLE(1) = YTAB_ID ! Yield function table = f(epsp,epsdot,temp)
245 PARMAT(17) = TWO*G/(BULK+FOUR_OVER_3*G) ! == (1-2*nu)/(1-nu)
257 CALL INIT_MAT_KEYWORD(MATPARAM ,"COMPRESSIBLE")
258 CALL INIT_MAT_KEYWORD(MATPARAM ,"INCREMENTAL" )
259 CALL INIT_MAT_KEYWORD(MATPARAM ,"LARGE_STRAIN")
260 CALL INIT_MAT_KEYWORD(MATPARAM ,"HOOK")
261 ! Properties compatibility
262 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ALL")
264 WRITE(IOUT,1000) TRIM(TITR),MAT_ID,ILAW
267 IF (IS_ENCRYPTED) THEN
268 WRITE(IOUT,'(5x,a,//)
')'confidential data
'
270 WRITE(IOUT,1200) RHO0,E,NU,THICK,IFORM
271 IF (YTAB_ID > 0) THEN
272 WRITE(IOUT,1300) YTAB_ID,XSCALE,YSCALE
274 WRITE(IOUT,1400) Q,B,H,Y0,CC,EPSPMIN,EPSPMAX
276 WRITE(IOUT,1500) A1F,A2F,A1H,A2H,AS,D1C,D2C,D1F,D2F,
277 . D_TRX,D_JC,EXP_N,ITRX,IDAM
282 & 5X,'material number. . . . . . . . . . . . =
',I10/,
283 & 5X,'material law . . . . . . . . . . . . . =
',I10/)
285 &(5X,'material model : toughened adhesive polymer
',/,
286 & 5X,'-------------------------------------------
',/)
288 & 5X,'initial density . . . . . . . . . . . .=
',1PG20.13/
289 & 5X,'young modulus . . . . . . . . . . . . .=
',1PG20.13/
290 & 5X,'poisson ratio . . . . . . . . . . . . .=
',1PG20.13/
291 & 5X,'reference thickness . . . . . . . . . .=
',1PG20.13/
292 & 5X,'yield criterion flag . . . . . . . . .=
',I3)
294 & 5X,'yield
FUNCTION table identifier . . . .=
',I10/
295 & 5X,'scale factor
for strain rate. . . . . .=
',1PG20.13/
296 & 5X,'scale factor
for yld function . . . . .=
',1PG20.13)
298 & 5X,'nonlinear hardening parameter . . . . .=
',1PG20.13/
299 & 5X,'exponential decay coefficient . . . . .=
',1PG20.13/
300 & 5X,'linear hardening parameter. . . . . . .=
',1PG20.13/
301 & 5X,'initial yield stress. . . . . . . . . .=
',1PG20.13/
302 & 5X,'strain rate coefficient . . . . . . . .=
',1PG20.13/
303 & 5X,'static strain rate. . . . . . . . . . .=
',1PG20.13/
304 & 5X,'maximal strain rate . . . . . . . . . .=
',1PG20.13)
306 & 5X,'yield function parameter a1f. . . . . .=
',1PG20.13/
307 & 5X,'yield function parameter a2f. . . . . .=
',1PG20.13/
308 & 5X,'yield function parameter a1h. . . . . .=
',1PG20.13/
309 & 5X,'yield function parameter a2h. . . . . .=
',1PG20.13/
310 & 5X,'plastic flow parameter as . . . . . .=
',1PG20.13/
311 & 5X,'failure model coefficient d1c . . . . .=
',1PG20.13/
312 & 5X,'failure model coefficient d2c . . . . .=
',1PG20.13/
313 & 5X,'failure model coefficient d1f . . . . .=
',1PG20.13/
314 & 5X,'failure model coefficient d2f . . . . .=
',1PG20.13/
315 & 5X,'damage coefficient d_trx. . . . . . . .=
',1PG20.13/
316 & 5X,'damage coefficient d_jc . . . . . . . .=
',1PG20.13/
317 & 5X,'exponent coefficient . . . . . . . . .=
',1PG20.13/
318 & 5X,'itrx: failure dependency on triaxiality=
',I3/
319 & 5X,'strain rate definition
for damage . . .=
',I3/)