40 . UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,NTABL ,
41 . MTAG ,PARMAT ,UNITAB ,PM ,LSUBMODEL,
42 . ISRATE ,MAT_ID ,TITR ,ITABLE ,MAXTABL ,
56#include
"implicit_f.inc"
65 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
66 INTEGER,
INTENT(IN) :: MAT_ID,MAXUPARAM,MAXTABL
67 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: PM
68 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
69 INTEGER,
INTENT(INOUT) :: ISRATE,ITABLE(MAXTABL)
70 INTEGER,
INTENT(INOUT) :: NUPARAM,NUVAR,NTABL
71DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
72 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
73 TYPE(),
DIMENSION(*),
INTENT(IN) :: LSUBMODEL
75 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
80 INTEGER I, J, ILAW, Ires, Itab, Ismooth
81 INTEGER TAB_YLD1,,TAB_YLD2,TAB_TEMP2,TAB_YLD3,TAB_TEMP3,
82 . TAB_YLD4,TAB_TEMP4,TAB_YLD5,TAB_TEMP5,TAB_YLD1C,TAB_TEMP1C,
83 . TAB_YLD2C,TAB_TEMP2C,TAB_YLDT,TAB_TEMPT,TAB_YLDC,TAB_TEMPC,
88 . young1,young2,young3,nu12,nu21,g12,g23,g31,
89 . k1,k2,k3,k4,k5,k6,g1c,d1,d2,sigy1,
90 . cini1,s1,sigy2,cini2,s2,sigy1c,cini1c,
91 . s1c,sigy2c,cini2c,s2c,sigyt,cinit,st,
92 . fcut,c1,ssp,a11,a12,a21,a22,xi1,xi2,
94 . k,e3c,cc,nu1p,nu2p,nu4p,nu5p,
95 . s01,a01,b01,c01,s02,a02,b02,c02,
96 . s03,a03,b03,c03,s04,a04,b04,c04,
97 . s05,a05,b05,c05,asig,bsig,csig,
99 . xscale1,yscale1,xscale2,yscale2,xscale3,yscale3,
100 . xscale4,yscale4,xscale5,yscale5,xscalec,yscalec,
101 . xscales,yscales,xscale1c,yscale1c,xscale2c,yscale2c,
102 . xscalet,yscalet,xscale_unit,yscale_unit,asrate,tref
104 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
106 IS_ENCRYPTED = .false.
107 is_available = .false.
114 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv(
'MAT_E1' ,young1 ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'MAT_E2' ,young2 ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_E3' ,young3 ,is_available, lsubmodel, unitab)
120 CALL hm_get_intv (
'MAT_IRES' ,ires ,is_available, lsubmodel)
121 CALL hm_get_intv (
'MAT_ITAB' ,itab ,is_available, lsubmodel)
122 CALL hm_get_intv (
'MAT_SMOOTH',ismooth ,is_available, lsubmodel)
123 IF (ismooth == 0) ismooth = 1
125 CALL hm_get_floatv(
'MAT_NU21' ,nu21 ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'MAT_G12' ,g12 ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'MAT_G23' ,g23 ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'MAT_XI1' ,xi1 ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'MAT_XI2' ,xi2 ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv(
'MAT_G1C' ,g1c ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'MAT_D1' ,d1 ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'MAT_D2' ,d2 ,is_available, lsubmodel, unitab)
136 CALL hm_get_floatv(
'MAT_K1' ,k1 ,is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'MAT_K2' ,k2 ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'MAT_K3' ,k3 ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv(
'MAT_K4' ,k4 ,is_available, lsubmodel, unitab)
141 CALL hm_get_floatv(
'MAT_K5' ,k5 ,is_available, lsubmodel, unitab)
142 CALL hm_get_floatv(
'MAT_K6' ,k6 ,is_available, lsubmodel, unitab)
146 CALL hm_get_floatv(
'MAT_SIGY1',sigy1 ,is_available, lsubmodel, unitab)
147 IF (sigy1 == zero) sigy1 = infinity
148 CALL hm_get_floatv(
'MAT_CINI1',cini1 ,is_available, lsubmodel, unitab)
149 IF (cini1 == zero) cini1 = infinity
150 CALL hm_get_floatv(
'MAT_S1' ,s1 ,is_available, lsubmodel, unitab)
152 CALL hm_get_floatv(
'MAT_SIGY2',sigy2 ,is_available, lsubmodel, unitab)
153 IF (sigy2 == zero) sigy2 = infinity
154 CALL hm_get_floatv(
'MAT_CINI2',cini2 ,is_available, lsubmodel, unitab)
155 IF (cini2 == zero) cini2 = infinity
156 CALL hm_get_floatv(
'MAT_S2' ,s2 ,is_available, lsubmodel, unitab)
158 CALL hm_get_floatv(
'MAT_SIGY1C',sigy1c ,is_available, lsubmodel, unitab)
159 IF (sigy1c == zero) sigy1c = infinity
160 CALL hm_get_floatv(
'MAT_CINI1C',cini1c ,is_available, lsubmodel, unitab)
161 IF (cini1c == zero) cini1c = infinity
162 CALL hm_get_floatv(
'MAT_S1C' ,s1c ,is_available, lsubmodel, unitab)
164 CALL hm_get_floatv(
'MAT_SIGY2C',sigy2c ,is_available, lsubmodel, unitab)
165 IF (sigy2c == zero) sigy2c = infinity
166 CALL hm_get_floatv(
'MAT_CINI2C',cini2c ,is_available, lsubmodel, unitab)
167 IF (cini2c == zero) cini2c = infinity
168 CALL hm_get_floatv(
'MAT_S2C' ,s2c ,is_available, lsubmodel, unitab)
170 CALL hm_get_floatv(
'MAT_SIGYT',sigyt ,is_available, lsubmodel, unitab)
171 IF (sigyt == zero) sigyt = infinity
172 CALL hm_get_floatv(
'MAT_CINIT',cinit ,is_available, lsubmodel, unitab)
173 IF (cinit == zero) cinit = infinity
174 CALL hm_get_floatv(
'MAT_ST' ,st ,is_available, lsubmodel, unitab)
177 CALL hm_get_intv ('tab_yld1
' ,TAB_YLD1 ,IS_AVAILABLE, LSUBMODEL)
178 CALL HM_GET_FLOATV('mat_xscale1
' ,XSCALE1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
179 IF (XSCALE1 == ZERO) THEN
180 CALL HM_GET_FLOATV_DIM('mat_xscale1
' ,XSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
181 XSCALE1 = ONE * XSCALE_UNIT
183 CALL HM_GET_FLOATV('mat_yscale1
' ,YSCALE1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
184 IF (YSCALE1 == ZERO) THEN
185 CALL HM_GET_FLOATV_DIM('mat_yscale1
' ,YSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
186 YSCALE1 = ONE * YSCALE_UNIT
189 CALL HM_GET_INTV ('tab_yld2
' ,TAB_YLD2 ,IS_AVAILABLE, LSUBMODEL)
190 CALL HM_GET_FLOATV('mat_xscale2
' ,XSCALE2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
191 IF (XSCALE2 == ZERO) THEN
192 CALL HM_GET_FLOATV_DIM('mat_xscale2
' ,XSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
193 XSCALE2 = ONE * XSCALE_UNIT
195 CALL HM_GET_FLOATV('mat_yscale2
' ,YSCALE2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
196 IF (YSCALE2 == ZERO) THEN
197 CALL HM_GET_FLOATV_DIM('mat_yscale2
' ,YSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
198 YSCALE2 = ONE * YSCALE_UNIT
201 CALL HM_GET_INTV ('tab_yld1c
' ,TAB_YLD1C ,IS_AVAILABLE, LSUBMODEL)
202 CALL HM_GET_FLOATV('mat_xscale1c
',XSCALE1C ,IS_AVAILABLE, LSUBMODEL, UNITAB)
203 IF (XSCALE1C == ZERO) THEN
204 CALL HM_GET_FLOATV_DIM('mat_xscale1c
' ,XSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
205 XSCALE1C = ONE * XSCALE_UNIT
207 CALL HM_GET_FLOATV('mat_yscale1c
',YSCALE1C ,IS_AVAILABLE, LSUBMODEL, UNITAB)
208 IF (YSCALE1C == ZERO) THEN
209 CALL HM_GET_FLOATV_DIM('mat_yscale1c
' ,YSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
210 YSCALE1C = ONE * YSCALE_UNIT
213 CALL HM_GET_INTV ('tab_yld2c
' ,TAB_YLD2C ,IS_AVAILABLE, LSUBMODEL)
214 CALL HM_GET_FLOATV('mat_xscale2c
',XSCALE2C ,IS_AVAILABLE, LSUBMODEL, UNITAB)
215 IF (XSCALE2C == ZERO) THEN
216 CALL HM_GET_FLOATV_DIM('mat_xscale2c
' ,XSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
217 XSCALE2C = ONE * XSCALE_UNIT
219 CALL HM_GET_FLOATV('mat_yscale2c
',YSCALE2C ,IS_AVAILABLE, LSUBMODEL, UNITAB)
220 IF (YSCALE2C == ZERO) THEN
221 CALL HM_GET_FLOATV_DIM('mat_yscale2c
' ,YSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
222 YSCALE2C = ONE * YSCALE_UNIT
225 CALL HM_GET_INTV ('tab_yldt
' ,TAB_YLDT ,IS_AVAILABLE, LSUBMODEL)
226 CALL HM_GET_FLOATV('mat_xscalet
' ,XSCALET ,IS_AVAILABLE, LSUBMODEL, UNITAB)
227 IF (XSCALET == ZERO) THEN
228 CALL HM_GET_FLOATV_DIM('mat_xscalet
' ,XSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
229 XSCALET = ONE * XSCALE_UNIT
231 CALL HM_GET_FLOATV('mat_yscalet
' ,YSCALET ,IS_AVAILABLE, LSUBMODEL, UNITAB)
232 IF (YSCALET == ZERO) THEN
233 CALL HM_GET_FLOATV_DIM('mat_yscalet
' ,YSCALE_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
234 YSCALET = ONE * YSCALE_UNIT
240 ! Default algorithm : Cutting plane
241 IF (Ires == 0) Ires = 2
243 nu12 = nu21*young1/young2
245 IF(nu12*nu21 >= one )
then
248 . anmode=aninfo_blind_2,
256 . anmode=aninfo_blind_2,
263 . anmode=aninfo_blind_2,
270 . anmode=aninfo_blind_2,
277 . anmode=aninfo_blind_2,
284 . anmode=aninfo_blind_2,
291 . anmode=aninfo_blind_2,
295 IF (abs(k1)<=abs(k2))
THEN
298 . anmode=aninfo_blind_2,
302 IF (abs(k2)<=abs(k4))
THEN
305 . anmode=aninfo_blind_2,
315 IF (itab > 0) asrate = 10000.
319 a11 = young1/(one - nu12*nu21)
320 a12 = nu12*young2/(one - nu12*nu21)
321 a21 = nu21*young1/(one - nu12*nu21)
322 a22 = young2/(one - nu12*nu21)
336 itable(1) = tab_yld1 ! yield
function table = f(epsp,epsdot)
338 itable(3) = tab_yld1c
339 itable(4) = tab_yld2c
392 IF (xscale1 /= zero)
THEN
393 uparam(24) = one/xscale1
398 IF (xscale2 /= zero)
THEN
399 uparam(26) = one/xscale2
404 IF (xscale1c /= zero)
THEN
405 uparam(28) = one/xscale1c
409 uparam(29) = yscale1c
410 IF (xscale2c /= zero)
THEN
411 uparam(30) = one/xscale2c
415 uparam(31) = yscale2c
416 IF (xscalet /= zero)
THEN
417 uparam(32) = one/xscalet
427 parmat(1) =
max(young1,young2,young3,g12,g23,g31)
428 parmat(2) =
max(young1,young2,young3)
429 parmat(3) =
max(nu12,nu21)
432 dmax =
max(young1,young2)
433 parmat(17) = dmin/dmax/dmax
438 ssp = sqrt(
max(a11,a12,a22,a21,young3,g12,g23,g31)/ rho0)
459 WRITE(iout,1000) trim(titr),mat_id,ilaw
461 IF (is_encrypted)
THEN
462 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
464 WRITE(iout,1200) rho0
465 WRITE(iout,1300) young1,young2,young3,nu12,nu21,g12,g23,g31
466 WRITE(iout,1350) ires
467 WRITE(iout,1450) xi1,xi2,k1,k2,k3,k4,k5,k6,g1c,d1,d2
469 WRITE(iout,1550) sigy1,cini1,s1,sigy2,cini2,s2,sigy1c,cini1c,s1c,
470 . sigy2c,cini2c,s2c,sigyt,cinit,st
472 WRITE(iout,1575) tab_yld1,xscale1,yscale1,tab_yld2,xscale2,yscale2,
473 . tab_yld1c,xscale1c,yscale1c,tab_yld2c,xscale2c,yscale2c,
474 . tab_yldt,xscalet,yscalet,ismooth
480 & 5x,
'MATERIAL NUMBER. . . . . . . . . . . . =',i10/,
481 & 5x,
'MATERIAL LAW . . . . . . . . . . . . . =',i10/)
483 &(5x,
'MATERIAL MODEL : PAPERBOARD LIGHT (PFEIFFER,2019)',/,
484 & 5x,
'-------------------------------------------------',/)
486 & 5x,
'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
488 & 5x,
'YOUNG MODULUS IN DIRECTION 1. . . . . .=',1pg20.13/
489 & 5x,
'YOUNG MODULUS IN DIRECTION 2. . . . . .=',1pg20.13/
490 & 5x,
'YOUNG MODULUS IN DIRECTION 3. . . . . .=',1pg20.13/
491 & 5x,
'POISSON RATIO NU12 . . . . . . . . . .=',1pg20.13/
492 & 5x,
'POISSON RATIO NU21 . . . . . . . . . .=',1pg20.13/
493 & 5x,
'SHEAR MODULUS IN 12 . . . . . . . . . .=',1pg20.13/
494 & 5x,
'SHEAR MODULUS IN 23 . . . . . . . . . .=',1pg20.13/
495 & 5x,
'SHEAR MODULUS IN 13 . . . . . . . . . .=',1pg20.13/)
497 & 5x,
'RETURN MAPPING ALGORITHM FLAG . . . . .=',i3/
498 & 5x,
' IRES=1 NICE EXPLICIT'/
499 & 5x,
' IRES=2 NEWTON-ITERATION IMPLICIT (CUTTING PLANE)'/)
501 & 5x,
'XI1 COUPLING PARAMETER IN DIRECTION 1 .=',1pg20.13/
502 & 5x,
'XI2 COUPLING PARAMETER IN DIRECTION 2 .=',1pg20.13/
503 & 5x,
'PLASTIC POTENTIAL PARAMETER K1 . . . .=',1pg20.13/
504 & 5x,
'PLASTIC POTENTIAL PARAMETER K2 . . . .=',1pg20.13/
505 & 5x,
'PLASTIC POTENTIAL PARAMETER K3 . . . .=',1pg20.13/
506 & 5x,
'PLASTIC POTENTIAL PARAMETER K4 . . . .=',1pg20.13/
507 & 5x,
'PLASTIC POTENTIAL PARAMETER K5 . . . .=',1pg20.13/
508 & 5x,
'PLASTIC POTENTIAL PARAMETER K6 . . . .=',1pg20.13/
509 & 5x,
'G1C CORRECTION PARAMETER FOR R1C. . . .=',1pg20.13/
510 & 5x,
'D1 SHEAR YIELD STRESS PARAMETER . . . .=',1pg20.13/
511 & 5x,
'D2 SHEAR YIELD STRESS PARAMETER . . . .=',1pg20.13/)
513 & 5x,
'-----------------------------------------------',/,
514 & 5x,
'YIELD STRESS IN TENSION IN DIRECTION 1 (MD) ',/,
515 & 5x,
'-----------------------------------------------',/,
516 & 5x,
'INITIAL YIELD STRESS SIGY1 . . . . . .=',1pg20.13/
517 & 5x,
'VALUE AT ORDINATE AXIS CINI1. . . . . .=',1pg20.13/
518 & 5x,
'YIELD STRESS SLOPE S1 . . . . . . . . .=',1pg20.13/
519 & 5x,
'-----------------------------------------------',/,
520 & 5x,
'YIELD STRESS IN TENSION IN DIRECTION 2 (CD) ',/,
521 & 5x,
'-----------------------------------------------',/,
522 & 5x,
'INITIAL YIELD STRESS SIGY2 . . . . . .=',1pg20.13/
523 & 5x,
'VALUE AT ORDINATE AXIS CINI2. . . . . .=',1pg20.13/
524 & 5x,
'YIELD STRESS SLOPE S2 . . . . . . . . .=',1pg20.13/
525 & 5x,
'-----------------------------------------------',/,
526 & 5x,
'YIELD STRESS IN COMPRESSION IN DIRECTION 1 (MD)',/,
527 & 5x,
'-----------------------------------------------',/,
528 & 5x,
'INITIAL YIELD STRESS SIGY1C . . . . . .=',1pg20.13/
529 & 5x,
'VALUE AT ORDINATE AXIS CINI1C . . . . .=',1pg20.13/
530 & 5x,
'YIELD STRESS SLOPE S1C . . . . . . . .=',1pg20.13/
531 & 5x,
'-----------------------------------------------',/,
532 & 5x,
'YIELD STRESS IN COMPRESSION IN DIRECTION 2 (CD)',/,
533 & 5x,
'-----------------------------------------------',/,
534 & 5x,
'INITIAL YIELD STRESS SIGY2C . . . . . .=',1pg20.13/
535 & 5x,
'VALUE AT ORDINATE AXIS CINI2C . . . . .=',1pg20.13/
536 & 5x,
'YIELD STRESS SLOPE S2C . . . . . . . .=',1pg20.13/
537 & 5x,
'-----------------------------------------------',/,
538 & 5x,
'YIELD STRESS IN SHEAR ',/,
539 & 5x,
'-----------------------------------------------',/,
540 & 5x,
'INITIAL YIELD STRESS SIGYT . . . . . .=',1pg20.13/
541 & 5x,
'VALUE AT ORDINATE AXIS CINIT . . . . .=',1pg20.13/
542 & 5x,
'YIELD STRESS SLOPE ST . . . . . . . . .=',1pg20.13/)
544 & 5x,
'---------------------------------------------------------',/,
545 & 5x,
'TABULATED YIELD STRESS IN TENSION IN DIRECTION 1 (MD) ',/,
546 & 5x,
'---------------------------------------------------------',/,
547 & 5x,
'TABULATED YIELD - STRAIN RATE TABLE ID.=',i10/
548 & 5x,
'TABULATED YIELD X FACTOR . . . . . . .=',1pg20.13/
549 & 5x,
'TABULATED YIELD Y FACTOR . . . . . . .=',1pg20
550 & 5x,
'---------------------------------------------------------',/,
551 & 5x,
'TABULATED YIELD STRESS IN TENSION IN DIRECTION 2 (CD) ',/,
552 & 5x,
'---------------------------------------------------------',/,
553 & 5x,
'TABULATED YIELD - STRAIN RATE TABLE ID.=',i10/
554 & 5x,
'TABULATED YIELD X FACTOR . . . . . . .=',1pg20.13/
555 & 5x,
'TABULATED YIELD Y FACTOR . . . . . . .=',1pg20.13/
556 & 5x,
'---------------------------------------------------------',/,
557 & 5x,
'TABULATED YIELD STRESS IN COMPRESSION IN DIRECTION 1 (MD)',/,
558 & 5x,
'---------------------------------------------------------',/,
559 & 5x,
'TABULATED YIELD - STRAIN RATE TABLE ID.=',i10/
560 & 5x,
'TABULATED YIELD X FACTOR . . . . . . .=',1pg20.13/
561 & 5x,
'TABULATED YIELD Y FACTOR . . . . . . .=',1pg20.13/
562 & 5x,
'---------------------------------------------------------',/,
563 & 5x,
'TABULATED YIELD STRESS IN COMPRESSION IN DIRECTION 2 (CD)',/,
564 & 5x,
'---------------------------------------------------------',/,
565 & 5x,
'TABULATED YIELD - STRAIN RATE TABLE ID.=',i10/
566 & 5x,
'TABULATED YIELD X FACTOR . . . . . . .=',1pg20
567 & 5x,
'TABULATED YIELD Y FACTOR . . . . . . .=',1pg20.13/
568 & 5x,
'---------------------------------------------------------',/,
569 & 5x,
'TABULATED YIELD STRESS IN SHEAR ',/,
570 & 5x,
'---------------------------------------------------------',/,
571 & 5x,
'TABULATED YIELD - STRAIN RATE TABLE ID.=',i10/
572 & 5x,
'TABULATED YIELD X FACTOR . . . . . . .=',1pg20.13/
573 & 5x,
'TABULATED YIELD Y FACTOR . . . . . . .=',1pg20.13/
574 & 5x,
'---------------------------------------------------------',/,
575 & 5x,
'DATA FOR STRAIN-RATE COMPUTATION ',/,
576 & 5x,
'---------------------------------------------------------',/,
577 & 5x,
'TABLE INTERPOLATION FLAG . . . . . . .=',i10/
578 & 5x,
' ISMOOTH=1 LINEAR INTERPOLATION'/
579 & 5x,
' ISMOOTH=2 LOGARITHMIC INTERPOLATION BASE 10'/
580 & 5x,
' ISMOOTH=3 LOGARITHMIC INTERPOLATION BASE N'/)