43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
66 USE matparam_def_mod
68
69
70
71#include "implicit_f.inc"
72
73
74
75#include "param_c.inc"
76#include "units_c.inc"
77
78
79
80 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
81 INTEGER, INTENT(INOUT) :: IFUNC(MAXFUNC),,MAXFUNC,MAXUPARAM,NUPARAM,NUVAR,ISRATE
82 INTEGER, INTENT(IN) :: MAT_ID
83 my_real,
INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam)
84 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
85 TYPE(),INTENT(IN) :: LSUBMODEL(NSUBMOD)
86 TYPE(), INTENT(INOUT) :: MTAG
87 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
88
89
90
91 INTEGER :: I,J,NRATE,IFILTR,IDYIELD,IFUNN,IFUNT,
92 . RHOFLAG,ICOMP,IPLAS,VP,ILAW
93 my_real :: youngt,youngc,g,young,fcut,xfac,yfac,xscale,rn,rs,beta,
alpha,
94 . a1,a2,aa,e0,emax,epsmax,rho0,rhor,yfac_unit,
95 . xfac_unit,xscale_unit,rn_unit,rs_unit
96 LOGICAL :: IS_AVAILABLE,
97
98 ilaw = 83
99
100 is_encrypted = .false.
101 is_available = .false.
102
104
105 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
107
108 CALL hm_get_floatv(
'MAT_E' ,youngt ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'MAT_G' ,g ,is_available, lsubmodel, unitab)
110 CALL hm_get_intv (
'MAT_IMASS' ,rhoflag ,is_available, lsubmodel)
111 CALL hm_get_intv (
'COMP_OPT' ,icomp ,is_available, lsubmodel)
112 CALL hm_get_floatv(
'MAT_ECOMP' ,youngc ,is_available, lsubmodel, unitab)
113
114 CALL hm_get_intv (
'FUN_A1' ,idyield ,is_available ,lsubmodel)
115 CALL hm_get_floatv(
'FScale11' ,yfac ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'FScale22' ,xfac ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'MAT_Beta' ,beta ,is_available, lsubmodel, unitab)
119
120 CALL hm_get_floatv(
'MAT_R00' ,rn ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_R45' ,rs ,is_available, lsubmodel, unitab)
122 CALL hm_get_intv (
'Fsmooth' ,israte ,is_available ,lsubmodel)
124
125 CALL hm_get_intv (
'FUN_A2' ,ifunn ,is_available ,lsubmodel)
126 CALL hm_get_intv (
'FUN_A3' ,ifunt ,is_available ,lsubmodel)
127 CALL hm_get_floatv(
'FScale33' ,xscale ,is_available, lsubmodel, unitab)
128
134
135 IF (rhor == zero) rhor=rho0
136 pm(1) = rhor
137 pm(89)= rho0
138
139 IF (xfac == zero) xfac = one*xfac_unit
140 IF (beta == zero) beta = two
141 IF (rn == zero) rn = one*rn_unit
142 IF (rs == zero) rs = one*rs_unit
143 iplas = 0
144 IF (iplas == 0) iplas = 2
145 IF (israte == 0) THEN
146 vp = 0
147 ELSE
148 vp = 1
149 israte = 1
150 END IF
151 IF (fcut == zero) fcut = 10000.0d0*unitab%FAC_T_WORK
152
153 nfunc = 3
154 ifunc(1) = ifunn
155 ifunc(2) = ifunt
156 ifunc(3) = idyield
157
158 IF (ifunc(3) == 0) THEN
159 CALL ancmsg(msgid=126, msgtype=msgerror, anmode=aninfo_blind_1,
160 . i1=mat_id,
161 . c1=titr,
162 . i2=ifunc(3))
163 ENDIF
164
165 IF (yfac == zero) yfac = one*yfac_unit
166 IF (xscale == zero) xscale = one*xscale_unit
167 IF( g == zero) g = youngt
168 IF (youngc == zero) youngc = youngt
169 IF (icomp /= 1) icomp = 0
170 young =
max(youngt,youngc)
172
173 uparam(1) = youngt
175 uparam(3) = beta
176 uparam(4) = yfac
177 uparam(5) = xscale
178 uparam(6) = rn
179 uparam(7) = rs
180 uparam(8) = xfac
181 uparam(9) = rhoflag
182 uparam(10)= iplas
183 uparam(11) = g
184 uparam(12) = icomp
185 uparam(13) = youngc
186 uparam(14) = vp
187
188 nuparam = 14
189 nuvar = 1
190
191 parmat(1) = young/three
192 parmat(2) = young
193 parmat(5) = fcut
194
195 parmat(16) = 2
196 parmat(17) = one
197
198 mtag%G_GAMA = 9
199 mtag%G_EPSD = 1
200 mtag%G_PLA = 1
201 mtag%L_EPE = 3
202 mtag%L_PLA = 1
203 mtag%L_EPSD = 1
204 mtag%L_DMG = 1
205 mtag%G_DMG = 1
206
207
209
211
212 WRITE(iout,1100) trim(titr),mat_id,83
213 WRITE(iout,1000)
214 IF (is_encrypted) THEN
215 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
216 ELSE
217 WRITE(iout,1200) rho0
218 WRITE(iout,1300) youngt,youngc,g,icomp,rhoflag,idyield,yfac,xfac,
alpha,beta
219 WRITE(iout,1400)ifunn,ifunt,xscale,rn,rs,israte,fcut
220 IF (vp ==0) THEN
221 WRITE(iout,1500)
222 ELSE
223 WRITE(iout,1600)
224 END IF
225 ENDIF
226
227 RETURN
228
229 1000 FORMAT(
230 & 5x,' CONNECTION MATERIAL LAW 83 ',/,
231 & 5x,' -------------------------- ',/)
232 1100 FORMAT(/
233 & 5x,a,/,
234 & 5x,'MATERIAL NUMBER . . . . . . . . . . . . . . . . . .=',i10/,
235 & 5x,'MATERIAL LAW. . . . . . . . . . . . . . . . . . . .=',i10/)
236 1200 FORMAT(
237 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . . . . . .=',1pg20.13)
238 1300 FORMAT(
239 & 5x,'YOUNG MODULUS PER THICKNESS UNIT IN TENSION . . . .=',1pg20.13/,
240 & 5x,'YOUNG MODULUS PER THICKNESS UNIT IN COMPRESSION . .=',1pg20.13/,
241 & 5x,'SHEAR MODULUS PER THICKNESS UNIT . . . . . . . . .=',1pg20.13/,
242 & 5x,'COMPRESSION BEHAVIOR (FLAG) . . . . . . . . . . . .=',i10/,
243 & 5x,' = 0 => ELASTO-PLASTIC '/,
244 & 5x,' = 1 => LINEAR ELASTIC '/,
245 & 5x,'DENSITY UNIT FLAG . . . . . . . . . . . . . . . . .=',i10/,
246 & 5x,' = 0 => VOLUME DENSITY '/,
247 & 5x,' = 1 => SURFACE DENSITY '/,
248 & 5x,'YIELD STRESS FUNCTION . . . . . . . . . . . . . . .=',i10/,
249 & 5x,'SCALE FACTOR FOR YIELD FUNCTION . . . . . . . . . .=',1pg20.13/,
250 & 5x,'SCALE FACTOR FOR YIELD FUNCTION ABSCISSA . . . . .=',1pg20.13/,
251 & 5x,'PARAMETER ALPHA IN YIELD FUNCTION . . . . . . . . .=',1pg20.13/,
252 & 5x,'PARAMETER BETA IN YIELD FUNCTION . . . . . . . . .=',1pg20.13)
253 1400 FORMAT(
254 & 5x,'STRAIN RATE FUNCTION IN NORMAL DIRECTION. . . . . .=',i10/,
255 & 5x,'STRAIN RATE FUNCTION IN TANGENT DIRECTION . . . . .=',i10/,
256 & 5x,'SCALE FACTOR FOR STRAIN RATE IN FUNCTION . . . . .=',1pg20.13/,
257 & 5x,'RN VARIABLE . . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
258 & 5x,'RS VARIABLE . . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
259 & 5x,'STRAIN RATE FILTERING FLAG . . . . . . . . . . . .=',i10/,
260 & 5x,'CUT FREQ FOR STRAIN RATE FILTERING . . . . . . . .=',1pg20.13)
261 1500 FORMAT(5x,'USING TOTAL STRAIN RATE',/)
262 1600 FORMAT(5x,'USING PLASTIC STRAIN RATE',/)
263
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_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)