42
43
44
45
46
47
48
49
50
51
52
53
54
55
59 USE matparam_def_mod
63
64
65
66#include "implicit_f.inc"
67
68
69
70#include "units_c.inc"
71#include "param_c.inc"
72
73
74
75 INTEGER, INTENT(IN) :: MAT_ID,MAXUPARAM
76 TYPE(UNIT_TYPE_), INTENT(in) :: UNITAB
77 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
78 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
79 INTEGER, INTENT(INOUT) :: NUPARAM,NUVAR,ISRATE,NFUNC
80 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
81 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
82 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD),INTENT(IN) :: LSUBMODEL
83 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
84 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
85
86
87
89 . e,nu,ca,cb,cn,cc,cd,cm,ce,ck,
90 . fisokin,fcut, sigm,eps0,epsm,epsr1,epsr2,
91 . g,c1,rho0,rhor
92 INTEGER ILAW,ISRATE_LOCAL
93 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
94
95 is_encrypted = .false.
96 is_available = .false.
97
98 ilaw = 48
99 cn = one
100 fisokin = zero
101
103
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' ,e ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
110
111 CALL hm_get_floatv(
'MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv(
'MAT_B' ,cb ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'MAT_N' ,cn ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv(
'MAT_HARD' ,fisokin ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
116
117 CALL hm_get_floatv(
'MAT_C' ,cc ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'MAT_D' ,cd ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_M' ,cm ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT_E1' ,ce ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'MAT_K' ,ck ,is_available, lsubmodel, unitab)
122
123 CALL hm_get_floatv(
'MAT_E0' ,eps0 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'SCALE' ,fcut ,is_available, lsubmodel, unitab)
125
126 CALL hm_get_floatv(
'MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'MAT_ETA1' ,epsr1 ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT_ETA2' ,epsr2 ,is_available, lsubmodel, unitab)
129
130
131
132
133 IF (nu < zero .OR. nu >= half) THEN
134
136 . msgtype=msgerror,
137 . anmode=aninfo_blind_2,
138 . r1=nu,
139 . i1=mat_id,
140 . c1=titr)
141 ENDIF
142 IF(cc > zero .AND. eps0 > zero .AND. fcut == zero) THEN
144 . msgtype=msgwarning,
145 . anmode=aninfo_blind_1,
146 . i1=mat_id,
147 . c1=titr)
148 ENDIF
149
150 IF (cn == zero .OR. cn == one) cn = onep0001
151 IF (cm == zero .OR. cm == one) cm = onep0001
152 IF (ck == zero) ck = one
153 IF (epsr1 == zero) epsr1 = infinity
154 IF (epsr2 == zero) epsr2 = two*infinity
155 IF (epsm == zero) epsm = infinity
156 IF (sigm == zero) sigm = infinity
157 IF (cc == zero) eps0 = one
158 IF (fcut <= zero)THEN
159 fcut = infinity
160 ENDIF
161
162 israte_local = 1
163 israte = 1
164
165 IF(epsr2 <= epsr1)THEN
166
168 . msgtype=msgerror,
169 . anmode=aninfo_blind_2,
170 . i1=mat_id,
171 . c1=titr)
172 ENDIF
173
174 nuparam = 25
175
176 IF(nuparam > maxuparam)THEN
178 . msgtype=msgerror,
179 . anmode=aninfo_blind_2,
180 . i1=mat_id,
181 . c1=titr,
182 . i2=nuparam,
183 . i3=maxuparam)
184 c1 = zero
185 g = zero
186 ELSE
187 c1 = e / three / (one - two*nu)
188 g = e / two / (one + nu)
189 uparam(1) = e
190 uparam(2) = nu
191 uparam(3) = ca
192 uparam(4) = sigm
193 uparam(5) = epsm
194 uparam(6) = epsr1
195 uparam(7) = epsr2
196 uparam(8) = cb
197 uparam(9) = cn
198 uparam(10) = cc
199 uparam(11) = cd
200 uparam(12) = cm
201 uparam(13) = israte_local
202 uparam(14) = fcut
203 uparam(15) = fisokin
204 uparam(16) = g
205 uparam(17) = two*g
206 uparam(18) = three*g
207 uparam(19) = c1
208 uparam(20) = e/(one - nu*nu)
209 uparam(21) = nu*uparam(20)
210 uparam(22) = epsm
211 uparam(23) = eps0
212 uparam(24) = ce
213 uparam(25) = ck
214 ENDIF
215
216 parmat(1) = c1
217 parmat(2) = e
218 parmat(3) = nu
219 parmat(4) = israte_local
220 parmat(5) = fcut
221
222
223 parmat(16) = 2
224 parmat(17) = two*g/(c1+four_over_3*g)
225
226 IF (rhor == zero) rhor = rho0
227 pm(1) = rhor
228 pm(89) = rho0
229
230 nuvar = 3
231 nfunc = 0
232 mtag%G_PLA = 1
233 mtag%L_PLA = 1
234
235
238
239
240
241
242 WRITE(iout,1000) trim(titr),mat_id,ilaw
243 WRITE(iout,1100)
244 IF (is_encrypted) THEN
245 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
246 ELSE
247 WRITE(iout,1200) rho0
248 WRITE(iout,1300) e,nu
249 WRITE(iout,1400) ca,cb,cn,fisokin,sigm
250 WRITE(iout,1500) cc,cd,cm,ce,ck
251 WRITE(iout,1600) eps0,fcut
252 WRITE(iout,1700) epsm,epsr1,epsr2
253 IF(eps0THEN
254 WRITE(iout,2100)
255 ENDIF
256 ENDIF
257
258 1000 FORMAT(/
259 & 5x,a,/,
260 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . .=',i10/,
261 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . .=',i10/)
262 1100 FORMAT
263 &(5x,'MATERIAL : ZHAO CONSTITUTIVE LAW',/,
264 & 5x,'--------------------------------',/)
265 1200 FORMAT(
266 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . .=',1pg20.13/)
267 1300 FORMAT(
268 & 5x,'YOUNG''S MODULUS . . . . . . . . . . . . . .=',1pg20.13/,
269 & 5x,'POISSON''S RATIO . . . . . . . . . . . . . .=',1pg20.13/)
270 1400 FORMAT(
271 & 5x,'PLASTICITY YIELD STRESS A . . . . . . . . . =',1pg20.13/,
272 & 5x,'PLASTICITY HARDENING PARAMETER B . . . . . =',1pg20.13/,
273 & 5x,'PLASTICITY HARDENING EXPONENT N . . . . . . =',1pg20.13/,
274 & 5x,'ISO-KINEMATIC HARDENING FACTOR CHARD . . . =',1pg20.13/,
275 & 5x,'PLASTICITY MAXIMUM STRESS SIGMA_MAX . . . . =',1pg20.13/)
276 1500 FORMAT(
277 & 5x,'RELATIVE STRAIN-RATE COEFFICIENT C . . . . =',1pg20.13/,
278 & 5x,'STRAIN-RATE PLASTICITY FACTOR D . . . . . . =',1pg20.13/,
279 & 5x,'RELATIVE STRAIN-RATE EXPONENT N . . . . . . =',1pg20.13/,
280 & 5x,'STRAIN-RATE COEFFICIENT E1 . . . . . . . . =',1pg20.13/,
281 & 5x,'STRAIN-RATE EXPONENT K . . . . . . . . . . =',1pg20.13/)
282 1600 FORMAT(
283 & 5x,'REFERENCE STRAIN-RATE EPS_RATE_0 . . . . . =',1pg20.13/,
284 & 5x,'CUTOFF FREQUENCY FCUT . . . . . . . . . . . =',1pg20.13/)
285 1700 FORMAT(
286 & 5x,'FAILURE PLASTIC STRAIN EPS_MAX . . . . . . =',1pg20.13/
287 & 5x,'TENSILE FAILURE STRAIN 1 EPS_T1 . . . . . . =',1pg20.13/
288 & 5x,'TENSILE FAILURE STRAIN 2 EPS_T2 . . . . . . =',1pg20.13/)
289 2100 FORMAT(1x,'EPS0 SHOULD BE > 0. IF CC /= 0.')
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
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)