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)
133 IF (icomp /= 1 .OR. 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
151 . anmode=aninfo_blind_1,
157 IF(nrate > 1 .AND. ifiltr == 0)
THEN
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
203 parmat(17) = (one - two*nu)/(one - nu)
218 WRITE(iout,1010) trim(titr),id,59
220 IF (is_encrypted)
THEN
221 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
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)