42
43
44
49 USE matparam_def_mod
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "scr03_c.inc"
69#include "units_c.inc"
70#include "param_c.inc"
71
72
73
74 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
75 INTEGER, INTENT(IN) :: MAT_ID
76 INTEGER, INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC
77 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
78 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
79 CHARACTER(nchartitle) ,INTENT(IN) :: TITR
80 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
81 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG
82 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
83
84
85
86 INTEGER :: ICAP,ILAW,ISRATE
87 my_real :: rho0,rhor,ymc,anuc,fc,ft,fb,f2d,s0,ht,dsup1,epsmax,vky,rt,
88 . rc,hbp,ali,alf,vmax,rok,ro0,hv0,yms,y0s,ets,arm1,arm2,arm3,
89 . etc,bulk,expo,f2d0,aa,cc,bc,sq32,bt,ac,eps0,hvfac
90 CHARACTER*64 :: message
91 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
92
93 is_encrypted = .false.
94 is_available = .false.
95 ilaw = 24
96
97 eps0 = zero
98 hvfac = zero
99 israte = 0
100
101
102
103
105
106
107
108
109 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
111
112 CALL hm_get_floatv(
'MAT_E' ,ymc ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'MAT_NU' ,anuc ,is_available, lsubmodel, unitab)
114 CALL hm_get_intv (
'Iflag' ,icap ,is_available, lsubmodel)
115
116 CALL hm_get_floatv(
'MAT_SIGY' ,fc ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv(
'MAT_FtFc' ,ft ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'MAT_FbFc' ,fb ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_F2Fc' ,f2d ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT_SoFc' ,s0 ,is_available, lsubmodel, unitab)
121
122 CALL hm_get_floatv(
'MAT_ETAN' ,ht ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT_DAMAGE' ,dsup1 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'MAT_EPS' ,epsmax ,is_available, lsubmodel, unitab)
125
126 CALL hm_get_floatv(
'MAT_BETA' ,vky ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'MAT_PPRES' ,rt ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT_YPRES' ,rc ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'MAT_BPMOD' ,hbp ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'MAT_ETC' ,etc ,is_available, lsubmodel, unitab)
131
132 CALL hm_get_floatv(
'MAT_DIL_Y' ,ali ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'MAT_DIL_F' ,alf ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'MAT_COMPAC' ,vmax ,is_available, lsubmodel, unitab)
135
136 CALL hm_get_floatv(
'MAT_CAP_BEG' ,rok ,is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'MAT_CAP_END' ,ro0 ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'MAT_TPMOD' ,hv0 ,is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'MAT_EPS0' ,eps0 ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv(
'MAT_HVFAC' ,hvfac ,is_available, lsubmodel, unitab)
141
142 CALL hm_get_floatv(
'MAT_E2' ,yms ,is_available, lsubmodel, unitab)
143 CALL hm_get_floatv(
'MAT_SSIG' ,y0s ,is_available, lsubmodel, unitab)
144 CALL hm_get_floatv(
'MAT_SETAN' ,ets ,is_available, lsubmodel, unitab)
145
146 CALL hm_get_floatv(
'MAT_PDIR1' ,arm1 ,is_available, lsubmodel, unitab)
147 CALL hm_get_floatv(
'MAT_PDIR2' ,arm2 ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv(
'MAT_PDIR3' ,arm3 ,is_available, lsubmodel, unitab)
149
150
151
152 IF (rhor == zero) rhor = rho0
153
154 IF (ft == zero) ft = em01
155 IF (fb == zero) fb = six_over_5
156 IF (s0 == zero) s0 = five_over_4
157 IF (ht >= zero) ht =-ymc
158 IF (dsup1 == zero) dsup1 = zep99999
159 IF (vmax >= zero) vmax =-zep35
160 IF (epsmax <= zero) epsmax= ep20
161
162 IF (vky == zero) vky = half
163 IF (rc == zero) rc =-third*fc
164 IF (hbp == zero) THEN
165 IF(etc /= zero )THEN
166 IF(etc < ymc) THEN
167 hbp = ymc*etc/(ymc-etc)
168 ELSE
170 . msgtype=msgerror,
171 . anmode=aninfo_blind_2,
172 . i1=mat_id,
173 . c1=titr)
174 ENDIF
175 ELSEIF (etc == zero )THEN
176 etc = (one-vky)*ymc*fc/(twoem3*ymc-vky*fc)
177 IF(etc < ymc) THEN
178 hbp = ymc*etc/(ymc-etc)
179 ELSE
181 . msgtype=msgerror,
182 . anmode=aninfo_blind_2,
183 . i1=mat_id,
184 . c1=titr)
185 ENDIF
186 ENDIF
187 ENDIF
188 bulk = ymc/three/(one-two*anuc)
189 IF (rok == zero) rok = rc
190 IF (icap == 0 .AND. invers < 2017) icap = 1
191 IF (icap == 2) THEN
192 IF (f2d == zero) f2d = seven
193 IF (ro0 == zero) ro0 =-two*fc
194 IF (hv0 == zero) hv0 = half*bulk
195 IF (eps0 == zero) eps0 = zep02
196 IF (hvfac== zero) hvfac= zep1
197 expo = -one/eps0
198 ELSE
199 IF (f2d == zero) f2d = four
200 IF (ro0 == zero) ro0 =-four_over_5*fc
201 IF (hv0 == zero) hv0 = ymc/five
202 expo = one/hv0/vmax
203 hvfac = zero
204 ENDIF
205
206
207 IF (ali >= zero) THEN
208 IF (icap == 1) THEN
209 message='CAP REQUIRES ALPHAI PARAMETER STRICTLY <0 '
210 ELSE
211 message='ALPHAI RESET TO DEFAULT -0.2 CAP REQUIRES ALPHAI <0'
212 ali =- one/five
213 ENDIF
215 . msgtype=msgwarning,
216 . anmode=aninfo,
217 . i1=mat_id,
218 . c1=titr,
219 . c2=message)
220 ENDIF
221
222 IF (dsup1 >= one .OR. dsup1 < zero) THEN
224 . msgtype=msgerror,
225 . anmode=aninfo_blind_2,
226 . i1=mat_id,
227 . c1=titr)
228 END IF
229
230
231
232
233
234
235
236
237
238
239
240 f2d0 = f2d - s0
241 aa = three_half* ( s0 /(f2d0 -one) - ft * fb /(fb-ft))/(f2d0 - fb*ft)
242 cc = fb * ft * ( f2d0 /(fb-ft) - s0 /(f2d0-one))/(f2d0 - fb*ft)
243 bc = half*sqr3_2 * (cc + third - two*third*aa)
244 bt = half*sqr3_2 * (cc/ft - third - two*third*aa*ft)
245 ac = cc*aa
246 aa = aa/fc
247
248 pm(1) = rhor
249 pm(89) = rho0
250
251 pm(20) = ymc
252 pm(21) = anuc
253 pm(22) = ymc/(two*(one+anuc))
254 pm(25) = ymc*anuc/(one+anuc)/(one-two*anuc)
255 pm(24) = pm(25) + two*pm(22)
256 pm(26) =
max(zero,dsup1)
257 pm(27) = vmax
258 pm(28) = one-ht/ymc
259
260 pm(29) = rok
261 pm(30) = ro0
262
263 pm(32) = bulk
264 pm(33) = fc
265 pm(34) = rt
266 pm(35) = rc
267 pm(36) = rt*(two*rc-rt
268 pm(37) = (rc-rt)**2
269 pm(38) = aa
270 pm(39) = bc
271 pm(40) = bt
272 pm(41) = ac
273 pm(42) = ft*fc/ymc
274 pm(43) = hbp
275 pm(44) = ali
276 pm(45) = alf
277 pm(46) = vky
278 pm(47) = epsmax
279
280 pm(48) = hv0
281 pm(49) = expo
282
283 pm(50) = yms
284 pm(51) = y0s
285 pm(52) = ets
286 pm(53) = arm1
287 pm(54) = arm2
288 pm(55) = arm3
289 pm(56) = one
290 pm(57) = icap+em01
291 pm(58) = one-hvfac
292 pm(59) = zero
293 pm(105)= two*pm(22)/(bulk+four_over_3*pm(22))
294
295 ipm(252)= 2
296
297 nuparam = 0
298 nfunc = 0
299 nuvar = 0
300
301
302
303 mtag%G_GAMA = 6
304 mtag%G_PLA = 1
305 mtag%L_PLA = 7
306
307 mtag%L_SIGA = 3
308 mtag%L_EPSA = 3
309 mtag%L_DAM = 3
310 mtag%L_ANG = 6
311 mtag%L_SF = 3
312 mtag%L_VK = 1
313 mtag%L_STRA = 6
314 mtag%L_CRAK = 3
315 mtag%L_DSUM = 1
316 mtag%L_ROB = 1
317 mtag%L_SIGC = 6
318 mtag%L_DGLO = 6
319 mtag%L_RK = 1
320 mtag%L_EPE = 1
321
322
325
326
329
330
331 WRITE(iout,1100) trim(titr),mat_id,24
332 WRITE(iout,1000)
333
334 IF (is_encrypted) THEN
335 WRITE(iout,'(5X,A,//)')'MATERIAL LAW CONFIDENTIAL DATA'
336 ELSE
337 WRITE(iout,1200) rho0
338 IF (icap == 2) THEN
339 WRITE(iout,1300)
340 WRITE(iout,1400) ymc,anuc,fc,ft,fb,f2d,s0,ht,dsup1,epsmax
341 WRITE(iout,1500) vky,rt,rc,rok,ro0,etc,hbp,hv0,eps0,hvfac,
342 . ali,alf,vmax,yms,y0s,ets,arm1,arm2,arm3,
343 . aa,bc,bt,cc
344 ELSE
345 WRITE(iout,1301)
346 WRITE(iout,1400) ymc,anuc,fc,ft,fb,f2d,s0,ht,dsup1,epsmax
347 WRITE(iout,1600) vky,rt,rc,rok,ro0,etc,hbp,hv0,ali,alf,vmax,
348 . yms,y0s,ets,arm1,arm2,arm3,
349 . aa,bc,bt,cc
350 ENDIF
351 ENDIF
352
353 RETURN
354
355 1000 FORMAT
356 & (5x,' MATERIAL MODEL : CONCRETE ',/,
357 & 5x,' BRITTLE ELASTIC PLASTIC MATRIX ',/,
358 & 5x,' ELASTIC PLASTIC REINFORCEMENT ',/,
359 & 5x,'------------------------------------------',/)
360 1100 FORMAT(/
361 & 5x,a,/,
362 & 5x,'MATERIAL NUMBER . . . . . . . . . . . . . =',i10/,
363 & 5x,'MATERIAL LAW. . . . . . . . . . . . . . . =',i10/)
364 1200 FORMAT(
365 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . =',1pg20.13/)
366 1300 FORMAT(
367 & 5x,' NEW CAP FORMULATION ',/)
368 1301 FORMAT(
369 & 5x,' ORIGINAL CAP FORMULATION ',/)
370 1400 FORMAT(
371 & 5x,' 1. matrix properties ',/,
372 & 5X,'ymc young modulus . . . . . . . . . . . =',E12.4/,
373 & 5X,'nuc poisson ratio . . . . . . . . . . . =',E12.4/,
374 & 5X,'fc uniaxial compression strength . . . =',E12.4/,
375 & 5X,'ft/fc tensile strength . . . . . . . . . =',E12.4/,
376 & 5X,'fb/fc biaxial strength . . . . . . . . . =',E12.4/,
377 & 5X,'f2/fc confined strength . . . . . . . . . =',E12.4/,
378 & 5X,'s0/fc confining stress. . . . . . . . . . =',E12.4/,
379 & 5X,'ht<0 tensile tangent mudulus . . . . . . =',E12.4/,
380 & 5X,'dsup1 maximum damage . . . . . . . . . . =',E12.4/,
381 & 5X,'depsm total failure crack strain . . . . =',E12.4)
382 1500 FORMAT(
383 & 5X,'ky initial hardening PARAMETER . . . . =',E12.4/,
384 & 5X,'rt failure/plastic transition pres . . =',E12.4/,
385 & 5X,'rc proportional yield. . . . . . . . . =',E12.4/,
386 & 5X,'rok beginning of cape . . . . . . . . . =',E12.4/,
387 & 5X,'ro0 END OF INITIAL CAPE . . . . . . . . =',E12.4/,
388 & 5X,'ETC PLASTIC TANGENT MODULUS . . . . . . =',E12.4/,
389 & 5X,'HBP UNIAXIAL PLASTIC MODULUS . . . . . =',E12.4/,
390 & 5X,'HV0 INITIAL TRIAXIAL PLASTIC MODULUS. . =',E12.4/,
391 & 5X,'EPS0 EPS0 FOR HPV HARDENING . . . . . . =',E12.4/,
392 & 5X,'HVFAC REDUCTION COEFFICIENT FOR HPV . . . =',E12.4/,
393 & 5X,'ALI COMPACTANCY FACTOR AT YIELD . . . =',E12.4/,
394 & 5X,'ALF DILATANCY FACTOR AT FA',E12.4/,
395 & 5X,'VMAX MAXIMAL COMPACTION VOLUME (<0). . . =',E12.4/,
396 & 5X,' 2. REINFORCEMENT PROPERTIES ',/,
397 & 5X,'YMS YOUNG MODULUS . . . . . . . . . . . =',E12.4/,
398 & 5X,'Y0S YIELD STRESS . . . . . . . . . . . =',E12.4/,
399 & 5X,'ETS TANGENT MODULUS . . . . . . . . . . =',E12.4/,
400 & 5X,'ARM1 PERCENTAGE OF REINFORCEMENT DIR 1 . =',E12.4/,
401 & 5X,'ARM2 PERCENTAGE OF REINFORCEMENT DIR 2 . =',E12.4/,
402 & 5X,'ARM3 PERCENTAGE OF REINFORCEMENT DIR 3 . =',E12.4/,
403 & 5X,'PARAMETER A FOR OTTOSEN SURFACE. . . . . =',E12.4/,
404 & 5X,'PARAMETER BC FOR OTTOSEN SURFACE. . . . . =',E12.4/,
405 & 5X,'PARAMETER BT FOR OTTOSEN SURFACE. . . . . =',E12.4/,
406 & 5X,'PARAMETER C FOR OTTOSEN SURFACE. . . . . =',E12.4)
407 1600 FORMAT(
408 & 5X,'KY INITIAL HARDENING PARAMETER . . . . =',E12.4/,
409 & 5X,'RT FAILURE/PLASTIC TRANSITION PRES . . =',E12.4/,
410 & 5X,'RC PROPORTIONAL YIELD. . . . . . . . . =',E12.4/,
411 & 5X,'ROK BEGINNING OF CAPE . . . . . . . . . =',E12.4/,
412 & 5X,'RO0 END OF INITIAL CAPE . . . . . . . . =',E12.4/,
413 & 5X,'ETC PLASTIC TANGENT MODULUS . . . . . . =',E12.4/,
414 & 5X,'HBP UNIAXIAL PLASTIC MODULUS . . . . . =',E12.4/,
415 & 5X,'HV0 INITIAL TRIAXIAL PLASTIC MODULUS. . =',E12.4/,
416 & 5X,'ALI DILATANCY FACTOR AT YIELD . . . . ',E12.4/,
417 & 5X,'ALF DILATANCY FACTOR AT FAILURE . . . . =',E12.4/,
418 & 5X,'VMAX MAXIMAL COMPACTION VOLUME (<0). . . =',E12.4//,
419 & 5X,' 2. REINFORCEMENT PROPERTIES ',/,
420 & 5X,'YMS YOUNG MODULUS . . . . . . . . . . . =',E12.4/,
421 & 5X,'Y0S YIELD STRESS . . . . . . . . . . . =',E12.4/,
422 & 5X,'ETS TANGENT MODULUS . . . . . . . . . . =',E12.4/,
423 & 5X,'ARM1 PERCENTAGE OF REINFORCEMENT DIR 1 . =',E12.4/,
424 & 5X,'ARM2 PERCENTAGE OF REINFORCEMENT DIR 2 . =',E12.4/,
425 & 5X,'ARM3 PERCENTAGE OF REINFORCEMENT DIR 3 . =',E12.4/,
426 & 5X,'PARAMETER A FOR OTTOSEN SURFACE. . . . . =',E12.4/,
427 & 5X,'PARAMETER BC FOR OTTOSEN SURFACE. . . . . =',E12.4/,
428 & 5X,'PARAMETER BT FOR OTTOSEN SURFACE. . . . . =',E12.4/,
429 & 5X,'PARAMETER C FOR OTTOSEN SURFACE. . . . . =',E12.4)
430
431 RETURN
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine init_mat_keyword(matparam, keyword)
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)