44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
67 USE matparam_def_mod
69
70
71
72#include "implicit_f.inc"
73
74
75
76#include "units_c.inc"
77#include "param_c.inc"
78
79
80
81 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
82 my_real,
INTENT(INOUT) :: pm(npropm
83 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC
84
85TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
86 INTEGER,INTENT(IN) :: MAT_ID,MAXTABL
87 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
88
89 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
90 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
91
92
93
94 INTEGER I,J,NRATE,NPS,IR0,ILAW
96 . e,nu,g,c1,epsmax,epsr1,epsr2,x2fac,yfac,
97 . s11y,s22y,s33y,s12y,s23y,s31y,
98 . fisokin,m,fac_l,fac_t,fac_m,fac_c,
99 . t0, rhocp, ff
100 . einf,ce,fac_pres,fac_strain_rate
101 INTEGER IFUNCE, OPTE, NUM_FUNC
103 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
104
105
106
107 is_encrypted = .false.
108 is_available = .false.
109 mtag%G_EPSD = 1
110 mtag%G_PLA = 1
111 mtag%G_SEQ = 1
112 mtag%L_EPSD = 1
113 mtag%L_PLA = 1
114 mtag%L_TEMP = 1
115
116 israte=0
117 imatvis=0
118 ilaw=74
119
121
122 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
123
127 CALL hm_get_floatv(
'MAT_EPST1' ,epsr1 ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT_EPST2' ,epsr2 ,is_available, lsubmodel, unitab)
129
130 CALL hm_get_intv (
'Yr_fun' ,ifunce ,is_available, lsubmodel)
131 CALL hm_get_floatv(
'MAT_EFIB' ,einf ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv(
'MAT_C' ,ce ,is_available, lsubmodel, unitab)
133
134 CALL hm_get_intv (
'Fsmooth' ,israte ,is_available, lsubmodel)
135 CALL hm_get_floatv(
'MAT_HARD' ,fisokin ,is_available, lsubmodel, unitab)
136 CALL hm_get_floatv(
'Fcut' ,fcut ,is_available, lsubmodel, unitab)
137
138 CALL hm_get_floatv(
'MAT_SIGT1' ,s11y ,is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'MAT_SIGT2' ,s22y ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv(
'MAT_SIGT3' ,s33y ,is_available, lsubmodel, unitab)
141
142 CALL hm_get_floatv(
'MAT_SIGYT1' ,s12y ,is_available, lsubmodel, unitab)
143 CALL hm_get_floatv(
'MAT_SIGYT2' ,s23y ,is_available, lsubmodel, unitab)
144 CALL hm_get_floatv(
'MAT_SIGYT3' ,s31y ,is_available, lsubmodel, unitab)
145
146 CALL hm_get_intv (
'FUN_A1' ,itable(1) ,is_available, lsubmodel)
147 CALL hm_get_floatv(
'MAT_FScale' ,yfac ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv(
'MAT_PScale' ,x2fac ,is_available, lsubmodel
149
150 CALL hm_get_floatv(
'T_Initial' ,t0 ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv(
'MAT_SPHEAT' ,rhocp ,is_available, lsubmodel, unitab)
152
154 CALL hm_get_floatv_dim(
'MAT_PScale' ,fac_strain_rate ,is_available, lsubmodel, unitab)
155
156 rhor = rho0
157 pm(1) =rhor
158 pm(89)=rho0
159
160 IF(yfac == zero)yfac=fac_pres
161 IF(x2fac == zero)x2fac=fac_strain_rate
162
163
164
165 IF(epsmax == zero) epsmax=infinity
166 IF(epsr1 == zero) epsr1=infinity
167 IF(epsr2 == zero) epsr2=two*infinity
168 IF(t0 == zero) t0=twohundred93
169
170 ntable=1
171 uparam(1)=fisokin
172 uparam(2)=e
173 uparam(3)=e/(one-nu*nu)
174 uparam(4)=nu*uparam(3)
175 g=half*e/(1.+nu)
176 uparam(5)=g
177 uparam(6)=nu
178
179
180 IF (s11y <= zero) THEN
182 . msgtype=msgerror,
183 . anmode=aninfo,
184 . i1=mat_id,
185 . c1=titr,
186 . c2='S11Y')
187 ENDIF
188 IF (s22y <= zero) THEN
190 . msgtype=msgerror,
191 . anmode=aninfo,
192 . i1=mat_id,
193 . c1=titr,
194 . c2='S22Y')
195 ENDIF
196 IF (s33y <= zero) THEN
198 . msgtype=msgerror,
199 . anmode=aninfo,
200 . i1=mat_id,
201 . c1=titr,
202 . c2='S33Y')
203 ENDIF
204 IF (s12y <= zero) THEN
206 . msgtype=msgerror,
207 . anmode=aninfo,
208 . i1=mat_id,
209 . c1=titr,
210 . c2='S12Y')
211 ENDIF
212 IF (s23y <= zero) THEN
214 . msgtype=msgerror,
215 . anmode=aninfo,
216 . i1=mat_id,
217 . c1=titr,
218 . c2='S23Y')
219 ENDIF
220 IF (s31y <= zero) THEN
222 . msgtype=msgerror,
223 . anmode=aninfo,
224 . i1=mat_id,
225 . c1=titr,
226 . c2='S31Y')
227 ENDIF
228
229 ff=half*(one/s22y**2+one/s33y**2-one/s11y**2)
230 gg=half*(one/s11y**2+one/s33y**2-one/s22y**2)
231 hh=half*(one/s11y**2+one/s22y**2-one/s33y**2)
232 ll=half/s23y**2
233 mm=half/s31y**2
234 nn=half/s12y**2
235 uparam(7)=ff
236 uparam(8)=gg
237 uparam(9)=hh
238 uparam(10)=ll
239 uparam(11)=mm
240 uparam(12)=nn
241 uparam(13)=one/x2fac
242 uparam(14)=yfac
243 uparam(15)=epsmax
244 uparam(16)=epsr1
245 uparam(17)=epsr2
246 uparam(18)=two*g
247 uparam(19)=three
248 c1=e/three/(one - two*nu)
249 uparam(20)=c1
250 uparam(21)=c1+ four_over_3*g
251 uparam(22)=t0
252 IF(rhocp==zero)THEN
253 uparam(23)=zero
254 ELSE
255 uparam(23)=one/rhocp
256 END IF
257
258 opte = 0
259 IF (ifunce > 0 )opte = 1
260 nfunc = 1
261 ifunc(nfunc) = ifunce
262 uparam(24) = nfunc
263 uparam(25) = opte
264 uparam(26) = einf
265 uparam(27) = ce
266
267 nuparam =27
268
269 israte = 1
270 parmat(1)=c1
271 parmat(2)=e
272 parmat(3)=nu
273 parmat(4) = israte
274 parmat(5) = fcut
275
276 nuvar = 10
277
278 parmat(16) = 2
279 parmat(17) = (one - two*nu)/(one - nu)
280
281
282 matparam%HEAT_FLAG = 1
283
284
286
287
289
290 WRITE(iout,1001) trim(titr),mat_id,ilaw
291 WRITE(iout,1000)
292 IF(is_encrypted)THEN
293 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
294 ELSE
295 WRITE(iout,1002)rho0
296 WRITE(iout,1100)e,nu,g,s11y,s22y,s33y,s12y,s23y,s31y,fisokin,
297 . israte,fcut
298 WRITE(iout,1300)epsmax,epsr1,epsr2
299 WRITE(iout,1200)itable(1),x2fac,yfac
300 WRITE(iout,1400)t0,rhocp,ifunce,einf,ce
301 WRITE(iout,*)' '
302 ENDIF
303
304 RETURN
305 1000 FORMAT(
306 & 5x,50h
tabulated hill orthotropic plasticity
for solids,/,
307 & 5x,50h ------------------------------------------------,//)
308 1001 FORMAT(
309 & 5x,a,/,
310 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
311 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
312 1002 FORMAT(
313 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
314 1100 FORMAT(
315 & 5x,'YOUNG MODULUS . . . . . . . . . . . . .=',1pg20.13/
316 & 5x,'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/
317 & 5x,'SHEAR MODULUS . . . . . . . . . . . . .=',1pg20.13/
318 & 5x,'YIELD IN DIRECTION 1. . . . . . . . . .=',1pg20.13/
319 & 5x,'YIELD IN DIRECTION 2. . . . . . . . . .=',1pg20.13/
320 & 5x,'YIELD IN DIRECTION 3. . . . . . . . . .=',1pg20.13/
321 & 5x,'YIELD IN SHEAR DIRECTION 12 . . . . . .=',1pg20.13/
322 & 5x,'YIELD IN SHEAR DIRECTION 23 . . . . . .=',1pg20.13/
323 & 5x,'YIELD IN SHEAR DIRECTION 31 . . . . . .=',1pg20.13/
324 & 5x,'ISO-KINEMATIC HARDENNING FACTOR . . . .=',1pg20.13/
325 & 5x,'SMOOTH STRAIN RATE OPTION . . . . . . .=',i10/
326 & 5x,'STRAIN RATE CUTTING FREQUENCY . . . . .=',1pg20.13/)
327 1200 FORMAT(
328 & 5x,'YIELD STRESS TABLE NUMBER . . . . . . .=',i10/
329 & 5x,'2ND ENTRY (STRAIN RATE) SCALE FACTOR. .=',1pg20.13/
330 & 5x,'YIELD SCALE FACTOR. . . . . . . . . . .=',1pg20.13)
331 1300 FORMAT(
332 & 5x,'MAXIMUM PLASTIC STRAIN. . . . . . . . .=',1pg20.13/
333 & 5x,'TENSILE FAILURE STRAIN 1. . . . . . . .=',1pg20.13/
334 & 5x,'TENSILE FAILURE STRAIN 2. . . . . . . .=',1pg20.13)
335 1400 FORMAT(
336 & 5x,'INITIAL TEMPERATURE . . . . . . . . . .=',1pg20.13/
337 & 5x,'HEAT CAPACITY PER VOLUME UNIT . . . . .=',1pg20.13/
338 & 5x,'YOUNG MODULUS SCALE FACTOR FUNCTION . .=',i10/
339 & 5x,'YOUNG MODULUS EINF. . . . . . . . . . .=',1pg20.13/
340 & 5x,'PARAMETER CE. . . . . . . . . . . . . .=',1pg20.13)
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)
for(i8=*sizetab-1;i8 >=0;i8--)
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)
subroutine tabulated(iflag, nel, pm, off, eint, mu, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, npf, tf)