43 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
44 . UNITAB ,ID ,TITR ,MTAG , LSUBMODEL,
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) :: ISRATE,IMATVIS,NFUNC,MAXFUNC,MAXUPARAM,NUPARAM,NUVAR
91 INTEGER,
INTENT(IN) :: ID
92 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
94 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
100 INTEGER :: RHOFLAG,ICOMP,NRATE,IFILTR,IFUNN(MAXFUNC),IFUNT(MAXFUNC)
101 my_real :: rho0, rhor,e,g,ecomp,fcut,rate0,yfac(maxfunc)
102 my_real :: rate(maxfunc),nu,fcut_unit,yfac_unit(maxfunc),rate_unit(maxfunc)
103 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
107 is_encrypted = .false.
108 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)
114 CALL hm_get_floatv('mat_e
' ,E ,IS_AVAILABLE, LSUBMODEL, UNITAB)
115 CALL HM_GET_FLOATV('mat_g0
' ,G ,IS_AVAILABLE, LSUBMODEL, UNITAB)
116 CALL HM_GET_INTV ('mat_imass
',RHOFLAG ,IS_AVAILABLE, LSUBMODEL)
117 CALL HM_GET_INTV ('comp_opt
' ,ICOMP ,IS_AVAILABLE, LSUBMODEL)
118 CALL HM_GET_FLOATV('ecomp
' ,ECOMP ,IS_AVAILABLE, LSUBMODEL, UNITAB)
119 CALL HM_GET_INTV ('nfunc
' ,NRATE ,IS_AVAILABLE, LSUBMODEL)
120 CALL HM_GET_INTV ('fsmooth
' ,IFILTR ,IS_AVAILABLE, LSUBMODEL)
121 CALL HM_GET_FLOATV('fcut
' ,FCUT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
122 CALL HM_GET_FLOATV_DIM('fcut
' ,FCUT_UNIT,IS_AVAILABLE, LSUBMODEL, UNITAB)
125 CALL HM_GET_INT_ARRAY_INDEX ('abg_ipt
' ,IFUNN(I) ,I ,IS_AVAILABLE, LSUBMODEL)
126 CALL HM_GET_INT_ARRAY_INDEX ('abg_ipdel
',IFUNT(I) ,I ,IS_AVAILABLE, LSUBMODEL)
127 CALL HM_GET_FLOAT_ARRAY_INDEX('fp1
' ,RATE(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
128 CALL HM_GET_FLOAT_ARRAY_INDEX_DIM('fp1
' ,RATE_UNIT(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
129 CALL HM_GET_FLOAT_ARRAY_INDEX('fp2
' ,YFAC(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
130 CALL HM_GET_FLOAT_ARRAY_INDEX_DIM('fp2
' ,YFAC_UNIT(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
133.OR.
IF (ICOMP /= 1 ECOMP <= 0) THEN
136 IF (ICOMP /= 1) ICOMP = 0
138 IF (FCUT == ZERO) FCUT = ONE * FCUT_UNIT
143 IFUNC(J+1) = IFUNN(I)
144 IFUNC(J+2) = IFUNT(I)
148 IF (IFUNC(I) == 0) THEN
149 CALL ANCMSG(MSGID=126,
151 . ANMODE=ANINFO_BLIND_1,
157.AND.
IF(NRATE > 1 IFILTR == 0) THEN
158 CALL ANCMSG(MSGID=1220,
159 . MSGTYPE=MSGWARNING,
160 . ANMODE=ANINFO_BLIND_1,
165 IF (YFAC(I) == ZERO) YFAC(I) = ONE * YFAC_UNIT(I)
169 IF (RATE(I) < RATE0) THEN
175 IF (RHOR == ZERO) RHOR=RHO0
184 UPARAM(6)=ECOMP*ICOMP
188 UPARAM(7+NRATE+I)=RATE(I)
191 NUPARAM = 7 + NRATE*2
199!! G= HALF*E/(ONE + NU)
200!! RBULK = THIRD*E/(ONE - TWO*NU)
203 PARMAT(17) = (ONE - TWO*NU)/(ONE - NU)
213 CALL INIT_MAT_KEYWORD(MATPARAM,"HOOK")
215 ! Properties compatibility
216 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_COHESIVE")
218 WRITE(IOUT,1010) TRIM(TITR),ID,59
220 IF (IS_ENCRYPTED)THEN
221 WRITE(IOUT,'(5x,a
')'confidential
'
224 WRITE(IOUT,1002) E,ECOMP,G,ICOMP,RHOFLAG,NRATE
226 WRITE(IOUT,1001)IFILTR,FCUT
227 WRITE(IOUT,1200)(RATE(J),IFUNN(J),IFUNT(J),YFAC(J),J=1,NRATE)
234 & 5X,40H CONNECTION MATERIAL LAW 59 ,/,
235 & 5X,40H -------------------------- ,//)
238 & 5X,'material number. . . . . . . . . . . . . . . . .=
',I10/,
239 & 5X,'material law . . . . . . . . . . . . . . . . . .=
',I10/)
241 & 5X,'young modulus per thickness unit in tension =
',1PG20.13/,
242 & 5X,'young modulus per thickness unit in compression =
',1PG20.13/,
243 & 5X,'shear modulus per thickness unit . . . . =
',1PG20.13/,
244 & 5X,'linear behaviour in compression(flag) . . . . .=
',I10/,
245 & 5X,'density unit flag . . . . . . . . . . . . . . =
',I10/,
246 & 5X,' = 0 => volume density
'/,
247 & 5X,' = 1 => surface density
'/,
248 & 5X,'number of yield(strain rate) functions . =
',I10/)
250 & 5X,'strain rate filtering flag . . . . . . . . . =
',I10/,
251 & 5X,'cut freq
for strain rate filtering . . . . . =
',1PG20.13/)
253 & 5X,'initial density . . . . . . . . . . . . . . . . =
',1PG20.13/)
255 & 5X,'strain rate . . . . . . . . . . . . . . =
',1PG20.13/,
256 &10X,'yield stress
FUNCTION in normal direction . =
',I10/,
257 &10X,'yield stress function in tangent direction . =
',I10/,
258 &10X,'scale factor. . . . . . . . . . . . . . =
',1PG20.13)
subroutine hm_read_mat59(uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, id, titr, mtag, lsubmodel, pm, matparam)
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)