39 . NUPARAM ,NUVAR ,NFUNC ,IPM ,PM ,
40 . MTAG ,MAT_ID ,TITR ,UNITAB ,LSUBMODEL,
64#include "implicit_f.inc"
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
82 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
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
93 is_encrypted = .false.
94 is_available = .false.
109 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
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)
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)
122 CALL hm_get_floatv(
'MAT_ETAN' ,ht ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv(
'MAT_DAMAGE' ,dsup1 ,is_available, lsubmodel, unitab)
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)
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)
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)
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)
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)
152 IF (rhor == zero) rhor = rho0
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
162 IF (vky == zero) vky = half
163 IF (rc == zero) rc =-third*fc
164 IF (hbp == zero)
THEN
167 hbp = ymc*etc/(ymc-etc)
171 . anmode=aninfo_blind_2,
175 ELSEIF (etc == zero )
THEN
176 etc = (one-vky)*ymc*fc/(twoem3*ymc-vky*fc)
178 hbp = ymc*etc/(ymc-etc)
182 . anmode=aninfo_blind_2,
188 bulk = ymc/three/(one-two*anuc)
189 IF (rok == zero) rok = rc
190 IF (icap == 0 .AND. invers < 2017) icap = 1
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
199 IF (f2d == zero) f2d = four
200 IF (ro0 == zero) ro0 =-four_over_5*fc
201 IF (hv0 == zero) hv0 = ymc/five
207 IF (ali >= zero)
THEN
209 message=
'CAP REQUIRES ALPHAI PARAMETER STRICTLY <0 '
211 message=
'ALPHAI RESET TO DEFAULT -0.2 CAP REQUIRES ALPHAI <0'
215 . msgtype=msgwarning,
222 IF (dsup1 >= one .OR. dsup1 < zero)
THEN
225 . anmode=aninfo_blind_2,
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)
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)
267 pm(36) = rt*(two*rc-rt)
293 pm(105)= two*pm(22)/(bulk+four_over_3*pm(22))
331 WRITE(iout,1100) trim(titr),mat_id,24
334 IF (is_encrypted)
THEN
335 WRITE(iout,
'(5X,A,//)')
'MATERIAL LAW CONFIDENTIAL DATA'
337 WRITE(iout,1200) rho0
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,
347 WRITE(iout,1600) vky,rt,rc,rok,ro0,etc,hbp,hv0,ali,alf,vmax,
348 . yms,y0s,ets,arm1,arm2,arm3,
356 & (5x,
' MATERIAL MODEL : CONCRETE ',/,
357 & 5x,
' BRITTLE ELASTIC PLASTIC MATRIX ',/,
358 & 5x,
' ELASTIC PLASTIC REINFORCEMENT ',/,
359 & 5x,
'------------------------------------------',/)
362 & 5x,
'MATERIAL NUMBER . . . . . . . . . . . . . =',i10/,
363 & 5x,
'MATERIAL LAW. . . . . . . . . . . . . . . =',i10/)
365 & 5x,
'INITIAL DENSITY . . . . . . . . . . . . . =',1pg20.13/)
367 & 5x,
' NEW CAP FORMULATION ',/)
369 & 5x,' original cap formulation
',/)
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)
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 FAILURE . . . . =
',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. . . . . ='
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 . . . . . ='
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)
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)