46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
70 USE matparam_def_mod
72
73
74
75#include "implicit_f.inc"
76
77
78
79#include "units_c.inc"
80#include "param_c.inc"
81
82
83
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
90 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
91 INTEGER,INTENT(IN) :: ID
92 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
93 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
94 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
95
96
97
98 INTEGER :: NBMAT
99 INTEGER :: I,J
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
104
105
106
107 is_encrypted = .false.
108 is_available = .false.
109
111
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)
123
124 DO i=1,nrate
131 ENDDO
132
133 IF (icomp /= 1 .OR. ecomp <= 0) THEN
134 ecomp = e
135 ENDIF
136 IF (icomp /= 1) icomp = 0
137
138 IF (fcut == zero) fcut = one * fcut_unit
139
140 nfunc = nrate*2
141 DO i=1,nrate
142 j = (i-1)*2
143 ifunc(j+1) = ifunn(i)
144 ifunc(j+2) = ifunt(i)
145 ENDDO
146
147 DO i=1,nfunc
148 IF (ifunc(i) == 0) THEN
150 . msgtype=msgerror,
151 . anmode=aninfo_blind_1,
153 . c1=titr,
154 . i2=ifunc(i))
155 ENDIF
156 ENDDO
157 IF(nrate > 1 .AND. ifiltr == 0) THEN
159 . msgtype=msgwarning,
160 . anmode=aninfo_blind_1,
162 . c1=titr)
163 ENDIF
164 DO i=1,nrate
165 IF (yfac(i) == zero) yfac(i) = one * yfac_unit(i)
166 ENDDO
167 rate0 = rate(1)
168 DO i=2,nrate
169 IF (rate(i) < rate0) THEN
170
171 ENDIF
172 rate0 = rate(i)
173 ENDDO
174
175 IF (rhor == zero) rhor=rho0
176 pm(1) = rhor
177 pm(89)= rho0
178
179 uparam(1)=e
180 uparam(2)=g
181 uparam(3)=nrate
182 uparam(4)=ifiltr
183 uparam(5)=fcut
184 uparam(6)=ecomp*icomp
185 uparam(7)=rhoflag
186 DO i=1,nrate
187 uparam(7+i)=yfac(i)
188 uparam(7+nrate+i)=rate(i)
189 ENDDO
190
191 nuparam = 7 + nrate*2
192 nuvar = 0
193
194 parmat(1) = e/three
196 parmat(5) = fcut
197
198
199
200
201 nu = half*e/g - one
202 parmat(16) = 2
203 parmat(17) = (one - two*nu)/(one - nu)
204
205 israte = 1
206 mtag%G_GAMA=9
207 mtag%G_EPSD=1
208 mtag%G_EINS=2
209 mtag%L_EPE =3
210 mtag%L_PLA =2
211
212
214
215
217
218 WRITE(iout,1010) trim(titr),
id,59
219 WRITE(iout,1000)
220 IF (is_encrypted)THEN
221 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
222 ELSE
223 WRITE(iout,1100)rho0
224 WRITE(iout,1002) e,ecomp,g,icomp,rhoflag,nrate
225 IF (nrate > 0) THEN
226 WRITE(iout,1001)ifiltr,fcut
227 WRITE(iout,1200)(rate(j),ifunn(j),ifunt(j),yfac(j),j=1,nrate)
228 ENDIF
229 ENDIF
230
231 RETURN
232
233 1000 FORMAT(
234 & 5x,40h connection material law 59 ,/,
235 & 5x,40h -------------------------- ,//)
236 1010 FORMAT(/
237 & 5x,a,/,
238 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . . . .=',i10/,
239 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . . . .=',i10/)
240 1002 FORMAT(
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/)
249 1001 FORMAT(
250 & 5x,'STRAIN RATE FILTERING FLAG . . . . . . . . . =',i10/,
251 & 5x,'CUT FREQ FOR STRAIN RATE FILTERING . . . . . =',1pg20.13/)
252 1100 FORMAT(
253 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . . . . =',1pg20.13/)
254 1200 FORMAT(
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)
259
260
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
subroutine hm_get_float_array_index_dim(name, dim_fac, index, is_available, lsubmodel, unitab)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle
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)