OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat112.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| hm_read_mat112 ../starter/source/materials/mat/mat112/hm_read_mat112.f
25!||--- called by ------------------------------------------------------
26!|| hm_read_mat ../starter/source/materials/mat/hm_read_mat.F90
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
30!|| hm_get_floatv_dim ../starter/source/devtools/hm_reader/hm_get_floatv_dim.F
31!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
32!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
33!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
34!||--- uses -----------------------------------------------------
35!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
36!|| message_mod ../starter/share/message_module/message_mod.F
37!|| submodel_mod ../starter/share/modules1/submodel_mod.F
38!||====================================================================
39 SUBROUTINE hm_read_mat112(
40 . UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,NTABL ,
41 . MTAG ,PARMAT ,UNITAB ,PM ,LSUBMODEL,
42 . ISRATE ,MAT_ID ,TITR ,ITABLE ,MAXTABL ,
43 . NVARTMP ,MATPARAM )
44C-----------------------------------------------
45C M o d u l e s
46C-----------------------------------------------
47 USE unitab_mod
48 USE message_mod
49 USE submodel_mod
50 USE elbuftag_mod
51 USE matparam_def_mod
53C-----------------------------------------------
54C I m p l i c i t T y p e sXM
55C-----------------------------------------------
56#include "implicit_f.inc"
57C-----------------------------------------------
58C C o m m o n B l o c k s
59C-----------------------------------------------
60#include "units_c.inc"
61#include "param_c.inc"
62C
63C-----------------------------------------------
64C D u m m y A r g u m e n t s
65C-----------------------------------------------
66 TYPE (UNIT_TYPE_),INTENT(IN) :: UNITAB
67 INTEGER, INTENT(IN) :: MAT_ID,MAXUPARAM,MAXTABL
68 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: PM
69 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
70 INTEGER, INTENT(INOUT) :: ISRATE,ITABLE(MAXTABL)
71 INTEGER, INTENT(INOUT) :: NUPARAM,NUVAR,NTABL,NVARTMP
72 my_real, DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
73 my_real, DIMENSION(100),INTENT(INOUT) :: parmat
74 TYPE(submodel_data), DIMENSION(*),INTENT(IN) :: LSUBMODEL
75 TYPE(mlaw_tag_), INTENT(INOUT) :: MTAG
76 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
77C
78C-----------------------------------------------
79C L o c a l V a r i a b l e s
80C-----------------------------------------------
81 INTEGER I, J, ILAW, Ires, Itab, Ismooth
82 INTEGER TAB_YLD1,TAB_YLD2,TAB_YLD3,TAB_YLD4,TAB_YLD5,
83 . TAB_YLDC,TAB_YLDS
84C REAL
85 my_real
86 . rho0,rhor,
87 . young1,young2,young3,nu12,nu21,g12,g23,g31,
88 . fcut,c1,ssp,a11,a12,a21,a22,xi1,xi2,
89 . dmin,dmax,k,e3c,cc,nu1p,nu2p,nu4p,nu5p,
90 . s01,a01,b01,c01,s02,a02,b02,c02,
91 . s03,a03,b03,c03,s04,a04,b04,c04,
92 . s05,a05,b05,c05,asig,bsig,csig,
93 . tau0,atau,btau,detc,
94 . xscale1,yscale1,xscale2,yscale2,xscale3,yscale3,
95 . xscale4,yscale4,xscale5,yscale5,xscalec,yscalec,
96 . xscales,yscales,xscale_unit,yscale_unit,asrate,tref
97C
98 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
99C=======================================================================
100 IS_ENCRYPTED = .false.
101 is_available = .false.
102 ilaw = 112
103c------------------------------------------
104 CALL hm_option_is_encrypted(is_encrypted)
105c------------------------------------------
106c
107card1 - Density
108 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
110card2 - Young moduli - Flags
111 CALL hm_get_floatv('MAT_E1' ,young1 ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv('MAT_E2' ,young2 ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv('MAT_E3' ,young3 ,is_available, lsubmodel, unitab)
114 CALL hm_get_intv ('MAT_IRES' ,ires ,is_available, lsubmodel)
115 CALL hm_get_intv ('MAT_ITAB' ,itab ,is_available, lsubmodel)
116 CALL hm_get_intv ('MAT_SMOOTH',ismooth ,is_available, lsubmodel)
117 IF (ismooth == 0) ismooth = 1
118card3 - Coulomb moduli - Poissson's ratio
119 CALL hm_get_floatv('MAT_NU21' ,nu21 ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('MAT_G12' ,g12 ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv('MAT_G23' ,g23 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv('MAT_G13' ,g31 ,is_available, lsubmodel, unitab)
123c
124card5 - Yield criterion and compressive parameter
125 CALL hm_get_floatv('MAT_K' ,k ,is_available, lsubmodel, unitab)
126 IF (k == zero) k = one
127 CALL hm_get_floatv('MAT_E3C' ,e3c ,is_available, lsubmodel, unitab)
128 IF (e3c == zero) e3c = young3
129 CALL hm_get_floatv('MAT_CC' ,cc ,is_available, lsubmodel, unitab)
130 IF (cc == zero) cc = one
131card6 - Plastic potential parameter
132 CALL hm_get_floatv('MAT_NU1P' ,nu1p ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv('MAT_NU2P' ,nu2p ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv('MAT_NU4P' ,nu4p ,is_available, lsubmodel, unitab)
135 CALL hm_get_floatv('MAT_NU5P' ,nu5p ,is_available, lsubmodel, unitab)
136 ! Choice in yield stresses input
137 IF (itab == 0) THEN
138card7 - Yield stress in tension in direction 1 (MD)
139 CALL hm_get_floatv('MAT_S01' ,s01 ,is_available, lsubmodel, unitab)
140 IF (s01 == zero) s01 = infinity
141 CALL hm_get_floatv('MAT_A01' ,a01 ,is_available, lsubmodel, unitab)
142 CALL hm_get_floatv('MAT_B01' ,b01 ,is_available, lsubmodel, unitab)
143 CALL hm_get_floatv('MAT_C01' ,c01 ,is_available, lsubmodel, unitab)
144card8 - Yield stress in compression in direction 1 (MD)
145 CALL hm_get_floatv('MAT_S02' ,s02 ,is_available, lsubmodel, unitab)
146 IF (s02 == zero) s02 = infinity
147 CALL hm_get_floatv('MAT_A02' ,a02 ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv('MAT_B02' ,b02 ,is_available, lsubmodel, unitab)
149 CALL hm_get_floatv('MAT_C02' ,c02 ,is_available, lsubmodel, unitab)
150card9 - Yield stress in positive shear
151 CALL hm_get_floatv('MAT_S03' ,s03 ,is_available, lsubmodel, unitab)
152 IF (s03 == zero) s03 = infinity
153 CALL hm_get_floatv('MAT_A03' ,a03 ,is_available, lsubmodel, unitab)
154 CALL hm_get_floatv('MAT_B03' ,b03 ,is_available, lsubmodel, unitab)
155 CALL hm_get_floatv('MAT_C03' ,c03 ,is_available, lsubmodel, unitab)
156card10 - Yield stress in tension in direction 2 (CD)
157 CALL hm_get_floatv('MAT_S04' ,s04 ,is_available, lsubmodel, unitab)
158 IF (s04 == zero) s04 = infinity
159 CALL hm_get_floatv('MAT_A04' ,a04 ,is_available, lsubmodel, unitab)
160 CALL hm_get_floatv('MAT_B04' ,b04 ,is_available, lsubmodel, unitab)
161 CALL hm_get_floatv('MAT_C04' ,c04 ,is_available, lsubmodel, unitab)
162card11 - Yield stress in compression in direction 2 (CD)
163 CALL hm_get_floatv('MAT_S05' ,s05 ,is_available, lsubmodel, unitab)
164 IF (s05 == zero) s05 = infinity
165 CALL hm_get_floatv('MAT_A05' ,a05 ,is_available, lsubmodel, unitab)
166 CALL hm_get_floatv('MAT_B05' ,b05 ,is_available, lsubmodel, unitab)
167 CALL hm_get_floatv('MAT_C05' ,c05 ,is_available, lsubmodel, unitab)
168card12 - Yield stress in out-of-plane direction
169 CALL hm_get_floatv('MAT_ASIG' ,asig ,is_available, lsubmodel, unitab)
170 IF (asig == zero) asig = infinity
171 CALL hm_get_floatv('MAT_BSIG' ,bsig ,is_available, lsubmodel, unitab)
172 CALL hm_get_floatv('MAT_CSIG' ,csig ,is_available, lsubmodel, unitab)
173card13 - Yield stress in transverse shear
174 CALL hm_get_floatv('MAT_TAU0' ,tau0 ,is_available, lsubmodel, unitab)
175 IF (tau0 == zero) tau0 = infinity
176 CALL hm_get_floatv('MAT_ATAU' ,atau ,is_available, lsubmodel, unitab)
177 CALL hm_get_floatv('MAT_BTAU' ,btau ,is_available, lsubmodel, unitab)
178 ELSE
179card7 - Yield stress in tension in direction 1 (MD)
180 CALL hm_get_intv ('TAB_YLD1' ,tab_yld1 ,is_available, lsubmodel)
181 IF (tab_yld1 == 0) THEN
182 CALL ancmsg(msgid=2056,
183 . msgtype=msgerror,
184 . anmode=aninfo_blind_2,
185 . i1=mat_id,
186 . c1=titr,
187 . i2=1)
188 ENDIF
189 CALL hm_get_floatv('MAT_Xscale1' ,xscale1 ,is_available, lsubmodel, unitab)
190 IF (xscale1 == zero) THEN
191 CALL hm_get_floatv_dim('MAT_Xscale1' ,xscale_unit ,is_available, lsubmodel, unitab)
192 xscale1 = one * xscale_unit
193 ENDIF
194 CALL hm_get_floatv('MAT_Yscale1' ,yscale1 ,is_available, lsubmodel, unitab)
195 IF (yscale1 == zero) THEN
196 CALL hm_get_floatv_dim('MAT_Yscale1' ,yscale_unit ,is_available, lsubmodel, unitab)
197 yscale1 = one * yscale_unit
198 ENDIF
199card8 - Yield stress in compression in direction 1 (MD)
200 CALL hm_get_intv ('TAB_YLD2' ,tab_yld2 ,is_available, lsubmodel)
201 IF (tab_yld2 == 0) THEN
202 CALL ancmsg(msgid=2056,
203 . msgtype=msgerror,
204 . anmode=aninfo_blind_2,
205 . i1=mat_id,
206 . c1=titr,
207 . i2=2)
208 ENDIF
209 CALL hm_get_floatv('MAT_Xscale2' ,xscale2 ,is_available, lsubmodel, unitab)
210 IF (xscale2 == zero) THEN
211 CALL hm_get_floatv_dim('MAT_Xscale2' ,xscale_unit ,is_available, lsubmodel, unitab)
212 xscale2 = one * xscale_unit
213 ENDIF
214 CALL hm_get_floatv('MAT_Yscale2' ,yscale2 ,is_available, lsubmodel, unitab)
215 IF (yscale2 == zero) THEN
216 CALL hm_get_floatv_dim('MAT_Yscale2' ,yscale_unit ,is_available, lsubmodel, unitab)
217 yscale2 = one * yscale_unit
218 ENDIF
219card9 - Yield stress in positive shear
220 CALL hm_get_intv ('TAB_YLD3' ,tab_yld3 ,is_available, lsubmodel)
221 IF (tab_yld3 == 0) THEN
222 CALL ancmsg(msgid=2056,
223 . msgtype=msgerror,
224 . anmode=aninfo_blind_2,
225 . i1=mat_id,
226 . c1=titr,
227 . i2=3)
228 ENDIF
229 CALL hm_get_floatv('MAT_Xscale3' ,xscale3 ,is_available, lsubmodel, unitab)
230 IF (xscale3 == zero) THEN
231 CALL hm_get_floatv_dim('MAT_Xscale3' ,xscale_unit ,is_available, lsubmodel, unitab)
232 xscale3 = one * xscale_unit
233 ENDIF
234 CALL hm_get_floatv('MAT_Yscale3' ,yscale3 ,is_available, lsubmodel, unitab)
235 IF (yscale3 == zero) THEN
236 CALL hm_get_floatv_dim('MAT_Yscale3' ,yscale_unit ,is_available, lsubmodel, unitab)
237 yscale3 = one * yscale_unit
238 ENDIF
239card10 - Yield stress in tension in direction 2 (CD)
240 CALL hm_get_intv ('TAB_YLD4' ,tab_yld4 ,is_available, lsubmodel)
241 IF (tab_yld4 == 0) THEN
242 CALL ancmsg(msgid=2056,
243 . msgtype=msgerror,
244 . anmode=aninfo_blind_2,
245 . i1=mat_id,
246 . c1=titr,
247 . i2=4)
248 ENDIF
249 CALL hm_get_floatv('MAT_Xscale4' ,xscale4 ,is_available, lsubmodel, unitab)
250 IF (xscale4 == zero) THEN
251 CALL hm_get_floatv_dim('MAT_Xscale4' ,xscale_unit ,is_available, lsubmodel, unitab)
252 xscale4 = one * xscale_unit
253 ENDIF
254 CALL hm_get_floatv('MAT_Yscale4' ,yscale4 ,is_available, lsubmodel, unitab)
255 IF (yscale4 == zero) THEN
256 CALL hm_get_floatv_dim('MAT_Yscale4' ,yscale_unit ,is_available, lsubmodel, unitab)
257 yscale4 = one * yscale_unit
258 ENDIF
259card11 - Yield stress in compression in direction 2 (CD)
260 CALL hm_get_intv ('TAB_YLD5' ,tab_yld5 ,is_available, lsubmodel)
261 IF (tab_yld5 == 0) THEN
262 CALL ancmsg(msgid=2056,
263 . msgtype=msgerror,
264 . anmode=aninfo_blind_2,
265 . i1=mat_id,
266 . c1=titr,
267 . i2=5)
268 ENDIF
269 CALL hm_get_floatv('MAT_Xscale5' ,xscale5 ,is_available, lsubmodel, unitab)
270 IF (xscale5 == zero) THEN
271 CALL hm_get_floatv_dim('MAT_Xscale5' ,xscale_unit ,is_available, lsubmodel, unitab)
272 xscale5 = one * xscale_unit
273 ENDIF
274 CALL hm_get_floatv('MAT_Yscale5' ,yscale5 ,is_available, lsubmodel, unitab)
275 IF (yscale5 == zero) THEN
276 CALL hm_get_floatv_dim('MAT_Yscale5' ,yscale_unit ,is_available, lsubmodel, unitab)
277 yscale5 = one * yscale_unit
278 ENDIF
279card12 - Yield stress in out-of-plane direction
280 CALL hm_get_intv ('TAB_YLDC' ,tab_yldc ,is_available, lsubmodel)
281 IF (tab_yldc == 0) THEN
282 CALL ancmsg(msgid=2056,
283 . msgtype=msgerror,
284 . anmode=aninfo_blind_2,
285 . i1=mat_id,
286 . c1=titr,
287 . i2=6)
288 ENDIF
289 CALL hm_get_floatv('MAT_XscaleC' ,xscalec ,is_available, lsubmodel, unitab)
290 IF (xscalec == zero) THEN
291 CALL hm_get_floatv_dim('MAT_XscaleC' ,xscale_unit ,is_available, lsubmodel, unitab)
292 xscalec = one * xscale_unit
293 ENDIF
294 CALL hm_get_floatv('MAT_YscaleC' ,yscalec ,is_available, lsubmodel, unitab)
295 IF (yscalec == zero) THEN
296 CALL hm_get_floatv_dim('MAT_YscaleC' ,yscale_unit ,is_available, lsubmodel, unitab)
297 yscalec = one * yscale_unit
298 ENDIF
299card12 - Yield stress in out-of-plane direction
300 CALL hm_get_intv ('TAB_YLDS' ,tab_ylds ,is_available, lsubmodel)
301 IF (tab_ylds == 0) THEN
302 CALL ancmsg(msgid=2056,
303 . msgtype=msgerror,
304 . anmode=aninfo_blind_2,
305 . i1=mat_id,
306 . c1=titr,
307 . i2=7)
308 ENDIF
309 CALL hm_get_floatv('MAT_XscaleS' ,xscales ,is_available, lsubmodel, unitab)
310 IF (xscales == zero) THEN
311 CALL hm_get_floatv_dim('MAT_XscaleS' ,xscale_unit ,is_available, lsubmodel, unitab)
312 xscales = one * xscale_unit
313 ENDIF
314 CALL hm_get_floatv('MAT_YscaleS' ,yscales ,is_available, lsubmodel, unitab)
315 IF (yscales == zero) THEN
316 CALL hm_get_floatv_dim('MAT_YscaleS' ,yscale_unit ,is_available, lsubmodel, unitab)
317 yscales = one * yscale_unit
318 ENDIF
319 ENDIF
320c---------------------
321c Default values
322c---------------------
323 ! Default algorithm : Cutting plane
324 IF (ires == 0) ires = 2
325 !Checking Poisson's ratio
326 nu12 = nu21*young1/young2
327 IF(nu12*nu21 >= one ) then
328 CALL ancmsg(msgid=3068,
329 . msgtype=msgerror,
330 . anmode=aninfo_blind_2,
331 . i1=mat_id ,
332 . c1=titr)
333 ENDIF
334c
335 ! Strain-rate and filtering
336 israte = 0
337 parmat(4) = zero
338 parmat(5) = zero
339 asrate = zero
340 IF (itab > 0) asrate = 10000.0d0*unitab%FAC_T_WORK
341c
342 ! elasticity parameter
343 ! Plane stress elastic constant
344 a11 = young1/(one - nu12*nu21)
345 a12 = nu12*young2/(one - nu12*nu21)
346 a21 = nu21*young1/(one - nu12*nu21)
347 a22 = young2/(one - nu12*nu21)
348c
349c--------------------------
350c Filling buffer tables
351c--------------------------
352 ! Number of material parameter
353 IF (itab == 0) THEN
354 nuparam = 47
355 ntabl = 0
356 nvartmp = 0
357 ELSE
358 nuparam = 37
359 ntabl = 7
360 nvartmp = 7
361 itable(1) = tab_yld1 ! Yield function table = f(epsp,epsdot,T)
362 itable(2) = tab_yld2 ! Yield function table = f(epsp,epsdot)
363 itable(3) = tab_yld3 ! Yield function table = f(epsp,epsdot)
364 itable(4) = tab_yld4 ! Yield function table = f(epsp,epsdot)
365 itable(5) = tab_yld5 ! Yield function table = f(epsp,epsdot)
366 itable(6) = tab_yldc ! Yield function table = f(epsp,epsdot)
367 itable(7) = tab_ylds ! Yield function table = f(epsp,epsdot)
368 ENDIF
369 ! Number of user variable
370 IF (ires == 1) THEN
371 nuvar = 3
372 ELSE
373 nuvar = 0
374 ENDIF
375c
376 ! Filling the parameter table
377 uparam(1) = young1
378 uparam(2) = young2
379 uparam(3) = young3
380 uparam(4) = nu12
381 uparam(5) = nu21
382 uparam(6) = a11
383 uparam(7) = a12
384 uparam(8) = a21
385 uparam(9) = a22
386 uparam(10) = g12
387 uparam(11) = g23
388 uparam(12) = g31
389 uparam(13) = ires
390 uparam(14) = itab
391 uparam(15) = two*k
392 uparam(16) = e3c
393 uparam(17) = cc
394 uparam(18) = nu1p
395 uparam(19) = nu2p
396 uparam(20) = nu4p
397 uparam(21) = nu5p
398 IF (itab == 0) THEN
399 uparam(22) = s01
400 uparam(23) = a01
401 uparam(24) = b01
402 uparam(25) = c01
403 uparam(26) = s02
404 uparam(27) = a02
405 uparam(28) = b02
406 uparam(29) = c02
407 uparam(30) = s03
408 uparam(31) = a03
409 uparam(32) = b03
410 uparam(33) = c03
411 uparam(34) = s04
412 uparam(35) = a04
413 uparam(36) = b04
414 uparam(37) = c04
415 uparam(38) = s05
416 uparam(39) = a05
417 uparam(40) = b05
418 uparam(41) = c05
419 uparam(42) = asig
420 uparam(43) = bsig
421 uparam(44) = csig
422 uparam(45) = tau0
423 uparam(46) = atau
424 uparam(47) = btau
425 ELSE
426 IF (xscale1 /= zero) THEN
427 uparam(22) = one/xscale1
428 ELSE
429 uparam(22) = zero
430 ENDIF
431 uparam(23) = yscale1
432 IF (xscale2 /= zero) THEN
433 uparam(24) = one/xscale2
434 ELSE
435 uparam(24) = zero
436 ENDIF
437 uparam(25) = yscale2
438 IF (xscale3 /= zero) THEN
439 uparam(26) = one/xscale3
440 ELSE
441 uparam(26) = zero
442 ENDIF
443 uparam(27) = yscale3
444 IF (xscale4 /= zero) THEN
445 uparam(28) = one/xscale4
446 ELSE
447 uparam(28) = zero
448 ENDIF
449 uparam(29) = yscale4
450 IF (xscale5 /= zero) THEN
451 uparam(30) = one/xscale5
452 ELSE
453 uparam(30) = zero
454 ENDIF
455 uparam(31) = yscale5
456 IF (xscalec /= zero) THEN
457 uparam(32) = one/xscalec
458 ELSE
459 uparam(32) = zero
460 ENDIF
461 uparam(33) = yscalec
462 IF (xscales /= zero) THEN
463 uparam(34) = one/xscales
464 ELSE
465 uparam(34) = zero
466 ENDIF
467 uparam(35) = yscales
468 uparam(36) = asrate
469 uparam(37) = ismooth
470 ENDIF
471c
472 ! PARMAT table
473 parmat(1) = max(young1,young2,young3,g12,g23,g31)
474 parmat(2) = max(young1,young2,young3)
475 parmat(3) = max(nu12,nu21)
476 parmat(16) = 1
477 dmin = young1*young2
478 dmax = max(young1,young2)
479 parmat(17) = dmin/dmax/dmax
480c
481 ! PM table
482 pm(1) = rhor
483 pm(89) = rho0
484 ssp = sqrt(max(a11,a12,a22,a21,young3,g12,g23,g31)/ rho0)
485 pm(27) = ssp
486c
487 ! MTAG variable activation
488 mtag%G_PLA = 4
489 mtag%L_PLA = 4
490 mtag%G_EPSD = 4
491 mtag%L_EPSD = 4
492c
493 CALL init_mat_keyword(matparam ,"ELASTO_PLASTIC")
494 CALL init_mat_keyword(matparam ,"INCREMENTAL" )
495 CALL init_mat_keyword(matparam ,"LARGE_STRAIN" )
496 CALL init_mat_keyword(matparam ,"HOOK")
497 CALL init_mat_keyword(matparam ,"ORTHOTROPIC")
498c
499 ! Properties compatibility
500 CALL init_mat_keyword(matparam,"SOLID_ORTHOTROPIC")
501 CALL init_mat_keyword(matparam,"SHELL_ORTHOTROPIC")
502c
503c--------------------------
504c Parameters printout
505c--------------------------
506 WRITE(iout,1000) trim(titr),mat_id,ilaw
507 WRITE(iout,1050)
508 IF (is_encrypted) THEN
509 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
510 ELSE
511 WRITE(iout,1200) rho0
512 WRITE(iout,1300) young1,young2,young3,nu12,nu21,g12,g23,g31
513 WRITE(iout,1350) ires
514 WRITE(iout,1400) k,e3c,cc,nu1p,nu2p,nu4p,nu5p
515 IF (itab == 0) THEN
516 WRITE(iout,1500) s01,a01,b01,c01,s02,a02,b02,c02,s03,a03,b03,c03,
517 . s04,a04,b04,c04,s05,a05,b05,c05,asig,bsig,csig,
518 . tau0,atau,btau
519 ELSE
520 WRITE(iout,1525) tab_yld1,xscale1,yscale1,tab_yld2,xscale2,yscale2,
521 . tab_yld3,xscale3,yscale3,tab_yld4,xscale4,yscale4,
522 . tab_yld5,xscale5,yscale5,tab_yldc,xscalec,yscalec,
523 . tab_ylds,xscales,yscales,ismooth
524 ENDIF
525 ENDIF
526c-----------------------------------------------------------------------
527 1000 FORMAT(/
528 & 5x,a,/,
529 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . =',i10/,
530 & 5x,'MATERIAL LAW . . . . . . . . . . . . . =',i10/)
531 1050 FORMAT
532 &(5x,'MATERIAL MODEL : PAPERBOARD (XIA,2002)',/,
533 & 5x,'--------------------------------------',/)
534 1200 FORMAT(
535 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
536 1300 FORMAT(
537 & 5x,'YOUNG MODULUS IN DIRECTION 1. . . . . .=',1pg20.13/
538 & 5x,'YOUNG MODULUS IN DIRECTION 2. . . . . .=',1pg20.13/
539 & 5x,'YOUNG MODULUS IN DIRECTION 3. . . . . .=',1pg20.13/
540 & 5x,'POISSON RATIO NU12 . . . . . . . . . .=',1pg20.13/
541 & 5x,'POISSON RATIO NU21 . . . . . . . . . .=',1pg20.13/
542 & 5x,'SHEAR MODULUS IN 12 . . . . . . . . . .=',1pg20.13/
543 & 5x,'SHEAR MODULUS IN 23 . . . . . . . . . .=',1pg20.13/
544 & 5x,'SHEAR MODULUS IN 13 . . . . . . . . . .=',1pg20.13/)
545 1350 FORMAT(
546 & 5x,'RETURN MAPPING ALGORITHM FLAG . . . . .=',i3/
547 & 5x,' IRES=1 NICE EXPLICIT'/
548 & 5x,' IRES=2 NEWTON-ITERATION IMPLICIT (CUTTING PLANE)'/)
549 1400 FORMAT(
550 & 5x,'YIELD CRITERION EXPONENT K . . . . . .=',1pg20.13/
551 & 5x,'ELASTIC COMPRESSION PARAMETER . . . . .=',1pg20.13/
552 & 5x,'ELASTIC COMPRESSION EXPONENT . . . . .=',1pg20.13/
553 & 5x,'TENSILE PLASTIC POISSON RATIO IN DIR 1.=',1pg20.13/
554 & 5x,'COMPRES PLASTIC POISSON RATIO IN DIR 1.=',1pg20.13/
555 & 5x,'TENSILE PLASTIC POISSON RATIO IN DIR 2.=',1pg20.13/
556 & 5x,'COMPRES PLASTIC POISSON RATIO IN DIR 2.=',1pg20.13/)
557 1500 FORMAT(
558 & 5x,'-----------------------------------------------',/,
559 & 5x,'YIELD STRESS IN TENSION IN DIRECTION 1 (MD) ',/,
560 & 5x,'-----------------------------------------------',/,
561 & 5x,'1ST PLASTICITY PARAMETER S01 . . . . .=',1pg20.13/
562 & 5x,'2ND PLASTICITY PARAMETER A01 . . . . .=',1pg20.13/
563 & 5x,'3RD PLASTICITY PARAMETER B01 . . . . .=',1pg20.13/
564 & 5x,'4TH PLASTICITY PARAMETER C01 . . . . .=',1pg20.13/
565 & 5x,'-----------------------------------------------',/,
566 & 5x,'YIELD STRESS IN TENSION IN DIRECTION 2 (CD) ',/,
567 & 5x,'-----------------------------------------------',/,
568 & 5x,'1ST PLASTICITY PARAMETER S02 . . . . .=',1pg20.13/
569 & 5x,'2ND PLASTICITY PARAMETER A02 . . . . .=',1pg20.13/
570 & 5x,'3RD PLASTICITY PARAMETER B02 . . . . .=',1pg20.13/
571 & 5x,'4TH PLASTICITY PARAMETER C02 . . . . .=',1pg20.13/
572 & 5x,'-----------------------------------------------',/,
573 & 5x,'YIELD STRESS IN POSITIVE SHEAR ',/,
574 & 5x,'-----------------------------------------------',/,
575 & 5x,'1ST PLASTICITY PARAMETER S03 . . . . .=',1pg20.13/
576 & 5x,'2ND PLASTICITY PARAMETER A03 . . . . .=',1pg20.13/
577 & 5x,'3RD PLASTICITY PARAMETER B03 . . . . .=',1pg20.13/
578 & 5x,'4TH PLASTICITY PARAMETER C03 . . . . .=',1pg20.13/
579 & 5x,'-----------------------------------------------',/,
580 & 5x,'YIELD STRESS IN COMPRESSION IN DIRECTION 1 (MD)',/,
581 & 5x,'-----------------------------------------------',/,
582 & 5x,'1ST PLASTICITY PARAMETER S04 . . . . .=',1pg20.13/
583 & 5x,'2ND PLASTICITY PARAMETER A04 . . . . .=',1pg20.13/
584 & 5x,'3RD PLASTICITY PARAMETER B04 . . . . .=',1pg20.13/
585 & 5x,'4TH PLASTICITY PARAMETER C04 . . . . .=',1pg20.13/
586 & 5x,'-----------------------------------------------',/,
587 & 5x,'YIELD STRESS IN COMPRESSION IN DIRECTION 2 (CD)',/,
588 & 5x,'-----------------------------------------------',/,
589 & 5x,'1ST PLASTICITY PARAMETER S05 . . . . .=',1pg20.13/
590 & 5x,'2ND PLASTICITY PARAMETER A05 . . . . .=',1pg20.13/
591 & 5x,'3RD PLASTICITY PARAMETER B05 . . . . .=',1pg20.13/
592 & 5x,'4TH PLASTICITY PARAMETER C05 . . . . .=',1pg20.13/
593 & 5x,'-----------------------------------------------',/,
594 & 5x,'YIELD STRESS IN OUT-OF-PLANE DIRECTION ',/,
595 & 5x,'-----------------------------------------------',/,
596 & 5x,'1ST PLASTICITY PARAMETER ASIG . . . . .=',1pg20.13/
597 & 5x,'2ND PLASTICITY PARAMETER BSIG . . . . .=',1pg20.13/
598 & 5x,'3RD PLASTICITY PARAMETER CSIG . . . . .=',1pg20.13/
599 & 5x,'-----------------------------------------------',/,
600 & 5x,'YIELD STRESS IN TRANSVERSE SHEAR ',/,
601 & 5x,'-----------------------------------------------',/,
602 & 5x,'1ST PLASTICITY PARAMETER TAU0 . . . . .=',1pg20.13/
603 & 5x,'2ND PLASTICITY PARAMETER ATAU . . . . .=',1pg20.13/
604 & 5x,'3rd plasticity PARAMETER btau . . . . .=',1PG20.13/)
605 1525 FORMAT(
606 & 5X,'---------------------------------------------------------',/,
607 & 5X,'tabulated yield stress in tension in direction 1 (md) ',/,
608 & 5X,'---------------------------------------------------------',/,
609 & 5X,'tabulated yield - strain rate table id.=',I10/
610 & 5X,'tabulated yield x factor . . . . . . .=',1PG20.13/
611 & 5X,'tabulated yield y factor . . . . . . .=',1PG20.13/
612 & 5X,'---------------------------------------------------------',/,
613 & 5X,'tabulated yield stress in tension in direction 2 (cd) ',/,
614 & 5X,'---------------------------------------------------------',/,
615 & 5X,'tabulated yield - strain rate table id.=',I10/
616 & 5X,'tabulated yield x factor . . . . . . .=',1PG20.13/
617 & 5X,'tabulated yield y factor . . . . . . .=',1PG20.13/
618 & 5X,'---------------------------------------------------------',/,
619 & 5X,'tabulated yield stress in positive shear ',/,
620 & 5X,'---------------------------------------------------------',/,
621 & 5X,'tabulated yield - strain rate table id.=',I10/
622 & 5X,'tabulated yield x factor . . . . . . .=',1PG20.13/
623 & 5X,'tabulated yield y factor . . . . . . .=',1PG20.13/
624 & 5X,'---------------------------------------------------------',/,
625 & 5X,'tabulated yield stress in compression in direction 1 (md)',/,
626 & 5X,'---------------------------------------------------------',/,
627 & 5X,'tabulated yield - strain rate table id.=',I10/
628 & 5X,'tabulated yield x factor . . . . . . .=',1PG20.13/
629 & 5X,'tabulated yield y factor . . . . . . .=',1PG20.13/
630 & 5X,'---------------------------------------------------------',/,
631 & 5X,'tabulated yield stress in compression in direction 2 (cd)',/,
632 & 5X,'---------------------------------------------------------',/,
633 & 5X,'tabulated yield - strain rate table id.=',I10/
634 & 5X,'tabulated yield x factor . . . . . . .=',1PG20.13/
635 & 5X,'tabulated yield y factor . . . . . . .=',1PG20.13/
636 & 5X,'---------------------------------------------------------',/,
637 & 5X,'tabulated yield stress in out-of-plane direction ',/,
638 & 5X,'---------------------------------------------------------',/,
639 & 5X,'tabulated yield - strain rate table id.=',I10/
640 & 5X,'tabulated yield x factor . . . . . . .=',1PG20.13/
641 & 5X,'tabulated yield y factor . . . . . . .=',1PG20.13/
642 & 5X,'---------------------------------------------------------',/,
643 & 5X,'tabulated yield stress in transverse shear ',/,
644 & 5X,'---------------------------------------------------------',/,
645 & 5X,'tabulated yield - strain rate table id.=',I10/
646 & 5X,'tabulated yield x factor . . . . . . .=',1PG20.13/
647 & 5X,'tabulated yield y factor . . . . . . .=',1PG20.13/
648 & 5X,'---------------------------------------------------------',/,
649 & 5X,'DATA for strain-rate computation ',/,
650 & 5X,'---------------------------------------------------------',/,
651 & 5X,'table interpolation flag . . . . . . .=',I10/
652 & 5X,' ismooth=1 linear interpolation'/
653 & 5X,' ismooth=2 logarithmic interpolation base 10'/
654 & 5X,' ismooth=3 logarithmic interpolation base n'/)
655c-----------------------------------------------------------------------
656 END
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 hm_read_mat112(uparam, maxuparam, nuparam, nuvar, ntabl, mtag, parmat, unitab, pm, lsubmodel, israte, mat_id, titr, itable, maxtabl, nvartmp, matparam)
subroutine init_mat_keyword(matparam, keyword)
#define max(a, b)
Definition macros.h:21
initmumps id
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)
Definition message.F:889
program starter
Definition starter.F:39
subroutine tabulated(iflag, nel, pm, off, eint, mu, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, npf, tf)
Definition tabulated.F:32