40 . UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,MAXFUNC ,
41 . NFUNC ,IFUNC ,MTAG ,PARMAT ,UNITAB ,
42 . PM ,LSUBMODEL,ISRATE ,MAT_ID ,TITR ,
56#include "implicit_f.inc"
65 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
66 INTEGER,
INTENT(IN) :: MAT_ID,MAXUPARAM,MAXFUNC
67 INTEGER,
INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC,NVARTMP
68 INTEGER,
INTENT(INOUT) :: ISRATE
69 INTEGER,
DIMENSION(MAXFUNC),
INTENT(INOUT) :: IFUNC
71 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
72 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
73 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
75 CHARACTER(LEN=NCHARTITLE),
INTENT(IN) :: TITR
76 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
81 INTEGER ILAW,ISH,ITR,IRES,IBUCK,IFUNCD1,IFUNCD2,
82 . IFUNCD2C,LTYPE11,LTYPE12,LTYPER0
84 . RHO0,E1,E2,E3,G12,G23,G31,NU12,NU23,NU31,NU21,NU32,NU13,
85 . e1c,gamma,sigy0,beta,m,a,efti,eftu,dftu,efci,efcu,dfcu,
86 . dsat1,y0,yc,b,dmax,yr,ysp,dsat2,y0p,ycp,dsat2c,y0pc,ycpc,
87 . epsd11,d11e,n11e,d11u,n11u,epsd12,d22e,n22e,d12e,n12e,
90 . detc,fac,a11,a22,a12,c11,c22,c12,c33,c13,c23,d11,d22,d33,
92 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
94 is_encrypted = .false.
95 is_available = .false.
102 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
104 CALL hm_get_floatv(
'MAT_E1' ,e1 ,is_available, lsubmodel, unitab
105 CALL hm_get_floatv(
'MAT_E2' ,e2 ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'MAT_E3' ,e3 ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv(
'MAT_G12' ,g12 ,is_available, lsubmodel, unitab
108 CALL hm_get_floatv(
'MAT_G23' ,g23 ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv(
'MAT_G31' ,g31 ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv(
'MAT_NU12' ,nu12 ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv(
'MAT_NU23' ,nu23 ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'MAT_NU31' ,nu31 ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'MAT_E1C' ,e1c ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT_GAMMA' ,gamma ,is_available, lsubmodel, unitab)
117 CALL hm_get_intv (
'ISH' ,ish ,is_available, lsubmodel)
118 CALL hm_get_intv (
'ITR' ,itr ,is_available, lsubmodel)
119 CALL hm_get_intv (
'IRES' ,ires ,is_available, lsubmodel)
121 CALL hm_get_floatv(
'SIGY0' ,sigy0 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'BETA' ,beta ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'MAT_EFTI' ,efti ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'MAT_EFTU' ,eftu ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv('mat_dftu
' ,DFTU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
129!card7 - Fiber compression damage parameters
130 CALL HM_GET_FLOATV('mat_efci
' ,EFCI ,IS_AVAILABLE, LSUBMODEL, UNITAB)
131 CALL HM_GET_FLOATV('mat_efcu
' ,EFCU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
132 CALL HM_GET_FLOATV('mat_dfcu
' ,DFCU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
133 CALL HM_GET_INTV ('ibuck
' ,IBUCK ,IS_AVAILABLE, LSUBMODEL)
134!card8 - Matrix in-plane shear damage
135 CALL HM_GET_INTV ('ifuncd1
' ,IFUNCD1 ,IS_AVAILABLE, LSUBMODEL)
136 CALL HM_GET_FLOATV('mat_dsat1
' ,DSAT1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
137 CALL HM_GET_FLOATV('mat_y0
' ,Y0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
138 CALL HM_GET_FLOATV('mat_yc
' ,YC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
139 CALL HM_GET_FLOATV('mat_b
' ,B ,IS_AVAILABLE, LSUBMODEL, UNITAB)
140!card9 - Shear common damage parameters
141 CALL HM_GET_FLOATV('mat_dmax
' ,DMAX ,IS_AVAILABLE, LSUBMODEL, UNITAB)
142 CALL HM_GET_FLOATV('mat_yr
' ,YR ,IS_AVAILABLE, LSUBMODEL, UNITAB)
143 CALL HM_GET_FLOATV('mat_ysp
' ,YSP ,IS_AVAILABLE, LSUBMODEL, UNITAB)
144!card10 - Matrix transverse shear tensile damage
145 CALL HM_GET_INTV ('ifuncd2
' ,IFUNCD2 ,IS_AVAILABLE, LSUBMODEL)
146 CALL HM_GET_FLOATV('mat_dsat2
' ,DSAT2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
147 CALL HM_GET_FLOATV('mat_y0p
' ,Y0P ,IS_AVAILABLE, LSUBMODEL, UNITAB)
148 CALL HM_GET_FLOATV('mat_ycp' ,ycp ,is_available, lsubmodel, unitab)
150 CALL hm_get_intv (
'IFUNCD2C' ,ifuncd2c ,is_available, lsubmodel)
151 CALL hm_get_floatv(
'MAT_DSAT2C',dsat2c ,is_available, lsubmodel, unitab)
152 CALL hm_get_floatv(
'MAT_Y0PC' ,y0pc ,is_available, lsubmodel, unitab)
153 CALL hm_get_floatv(
'MAT_YCPC' ,ycpc ,is_available, lsubmodel, unitab)
155 CALL hm_get_floatv(
'MAT_EPSD11',epsd11 ,is_available, lsubmodel, unitab)
156 CALL hm_get_floatv(
'MAT_D11' ,d11e ,is_available, lsubmodel, unitab)
157 CALL hm_get_floatv(
'MAT_N11' ,n11e ,is_available, lsubmodel, unitab)
158 CALL hm_get_floatv(
'MAT_D11U' ,d11u ,is_available, lsubmodel, unitab)
159 CALL hm_get_floatv(
'MAT_N11U' ,n11u ,is_available, lsubmodel, unitab)
160!card13 - shear and transverse directions strain rate dependency parameters
161 CALL hm_get_floatv(
'MAT_EPSD12',epsd12 ,is_available, lsubmodel, unitab)
162 CALL hm_get_floatv(
'MAT_D22' ,d22e ,is_available, lsubmodel, unitab)
163 CALL hm_get_floatv(
'MAT_N22' ,n22e ,is_available, lsubmodel, unitab)
164 CALL hm_get_floatv(
'MAT_D12' ,d12e ,is_available, lsubmodel, unitab)
165 CALL hm_get_floatv(
'MAT_N12' ,n12e ,is_available, lsubmodel, unitab)
167 CALL hm_get_floatv('mat_epsdr0
',EPSDR0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
168 CALL HM_GET_FLOATV('mat_dr0
' ,DR0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
169 CALL HM_GET_FLOATV('mat_nr0
' ,NR0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
170 CALL HM_GET_INTV ('ltype11
' ,LTYPE11 ,IS_AVAILABLE, LSUBMODEL)
171 CALL HM_GET_INTV ('ltype12
' ,LTYPE12 ,IS_AVAILABLE, LSUBMODEL)
172 CALL HM_GET_INTV ('ltyper0
' ,LTYPER0 ,IS_AVAILABLE, LSUBMODEL)
173!card15 - Equivalent strain rate cutoff frequency
174 CALL HM_GET_FLOATV('fcut
' ,FCUT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
180 IF (E2 == ZERO) E2 = E1
181 IF (E3 == ZERO) E3 = E2
183 IF (G31 == ZERO) G31 = G12
190 if(nu12*nu21 >= one )
then
193 . anmode=aninfo_blind_2,
196 else if(nu13*nu31 >= one )
then
199 . anmode=aninfo_blind_2,
202 else if(nu23*nu32 >= one )
then
205 . anmode=aninfo_blind_2,
210 detc = one - nu12*nu21
211 IF (detc <= zero)
THEN
220 fac = one/(one - nu12*nu21)
232 detc= c11*c22*c33-c11*c23*c23-c12*c12*c33+c12*c13*c23
233 . +c13*c12*c23-c13*c22*c13
242 d11 = (c22*c33-c23*c23)/detc
243 d12 =-(c12*c33-c13*c23)/detc
244 d13 = (c12*c23-c13*c22)/detc
245 d22 = (c11*c33-c13*c13)/detc
246 d23 =-(c11*c23-c13*c12)/detc
247 d33 = (c11*c22-c12*c12)/detc
248 dmn =
min(d11*d22 -d12**2, d11*d33 - d13**2, d22*d33 - d23**2 )
249 dmx =
max(d11,d22,d33)
252 IF (e1c == zero) e1c = e1
255 IF (ires == 0) ires = 2
259 IF (ish == 0) ish = 1
262 IF (itr == 0) itr = 1
266 IF (ibuck == 0) ibuck = 1
271 IF (sigy0 == zero) sigy0 = infinity
274 IF (efti == zero) efti = infinity
275 IF (eftu == zero) eftu = two*infinity
276 dftu =
max(dftu,zero)
278 IF (efci == zero) efci = infinity
279 IF (efcu == zero) efcu = two*infinity
280 dfcu =
max(dfcu,zero)
285 dmax =
max(dmax,zero)
286 dsat1 =
min(dsat1,one)
287 dsat1 =
max(dsat1,zero)
288 dsat2 =
min(dsat2,one)
289 dsat2 =
max(dsat2,zero)
290 dsat2c =
min(dsat2c,one)
291 dsat2c =
max(dsat2c,zero)
293 IF (b == zero) b = e2/g12
296 IF ((ifuncd1 > 0).AND.(y0 == zero))
THEN
298 ELSEIF (y0 == zero)
THEN
301 IF ((ifuncd2 > 0).AND.(y0p == zero))
THEN
303 ELSEIF (y0p == zero)
THEN
306 IF ((ifuncd2c > 0).AND.(y0pc == zero))
THEN
309 IF (yr == zero) yr = infinity
310 IF (ysp == zero) ysp = infinity
313 IF (epsd11 == zero)
THEN
316 IF (epsd12 == zero)
THEN
319 IF (epsdr0 == zero)
THEN
324 IF (ltype11 == 0) ltype11 = 1
325 ltype11 =
min(ltype11,4)
326 ltype11 =
max(ltype11,1)
327 IF (ltype12 == 0) ltype12 = 1
328 ltype12 =
min(ltype12,4)
329 ltype12 =
max(ltype12,1)
330 IF (ltyper0 == 0) ltyper0 = 1
331 ltyper0 =
min(ltyper0,4)
332 ltyper0 =
max(ltyper0,1)
335 IF (fcut == zero) fcut = 5000.0d0*unitab%FAC_T_WORK
421 parmat(1) =
max(a11,a22,d11,d22,d33)
422 parmat(2) =
max(e1,e2,e3)
423 parmat(3) =
max(nu12,nu13,nu23)
427 parmat(17) = dmn/dmx/dmx
446 ALLOCATE(matparam%MODE(matparam%NMOD))
447 matparam%MODE(1) =
"Fiber damage"
448 matparam%MODE(2) =
"Shear matrix damage"
449 matparam%MODE(3) =
"Transverse matrix damage"
464 WRITE(iout,1000) trim(titr),mat_id,ilaw
466 IF (is_encrypted)
THEN
467 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
469 WRITE(iout,1200) rho0
470 WRITE(iout,1300) e1,e2,e3,g12,g23,g31,nu12,nu23,nu31,e1c,gamma
471 WRITE(iout,1400) sigy0,beta,m,a,ires
472 WRITE(iout,1500) efti,eftu,dftu,efci,efcu,dfcu,ibuck
473 WRITE(iout,1600) ish,ifuncd1,dsat1,y0,yc,b
474 WRITE(iout,1700) dmax,yr,ysp
475 WRITE(iout,1800) itr,ifuncd2,dsat2,y0p,ycp,ifuncd2c,dsat2c,y0pc,ycpc
476 WRITE(iout,1900) epsd11,d11e,n11e,d11u,n11u,ltype11
477 WRITE(iout,2000) epsd12,d22e,n22e,d12e,n12e,ltype12
478 WRITE(iout,2100) epsdr0,dr0,nr0,ltyper0
479 WRITE(iout,2200) fcut
484 & 5x,
'MATERIAL NUMBER. . . . . . . . . . . . =',i10/,
485 & 5x,
'MATERIAL LAW . . . . . . . . . . . . . =',i10/)
487 &(5x,
'MATERIAL MODEL : MODIFIED LADEVEZE',/,
488 & 5x,
'----------------------------------',/)
490 & 5x,
'INITIAL DENSITY . . . . . . . . . . . . . . . . .=',1pg20.13/)
492 & 5x,
'ELASTICITY PARAMETERS: ',/
493 & 5x,
'---------------------- ',/
494 & 5x,
'YOUNG MODULUS IN DIR. 1 (FIBER) E1 . . . . . . .=',1pg20.13/
495 & 5x,
'YOUNG MODULUS IN DIR. 2 (MATRIX) E2 . . . . . . .=',1pg20.13/
496 & 5x,
'YOUNG MODULUS IN DIR. 3 (MATRIX) E3 . . . . . . .=',1pg20.13/
497 & 5x,
'SHEAR MODULUS IN PLANE 12 G12 . . . . . . . . . .=',1pg20.13/
498 & 5x,
'SHEAR MODULUS IN PLANE 23 G23 . . . . . . . . . .=',1pg20.13/
499 & 5x,
'SHEAR MODULUS IN PLANE 31 G31 . . . . . . . . . .=',1pg20.13/
500 & 5x,
'POISSON RATIO IN PLANE 12 NU12. . . . . . . . . .=',1pg20.13/
501 & 5x,
'POISSON RATIO IN PLANE 23 NU23. . . . . . . . . .=',1pg20.13/
502 & 5x,
'POISSON RATIO IN PLANE 31 NU31. . . . . . . . . .=',1pg20.13/
503 & 5x,
'INITIAL COMPRESSION YOUNG MODULUS IN DIR. 1 E1C .=',1pg20.13/
504 & 5x,
'COMPRESSION YOUNG MODULUS FACTOR GAMMA. . . . . .=',1pg20.13/)
506 & 5x,
'PLASTICITY PARAMETERS: ',/
507 & 5x,
'--------------------- ',/
508 & 5x,
'INITIAL YIELD STRESS SIGY0. . . . . . . . . . . .=',1pg20.13/
509 & 5x,
'HARDENING MODULUS BETA. . . . . . . . . . . . . .=',1pg20.13/
510 & 5x,
'HARDENING EXPONENT M. . . . . . . . . . . . . . .=',1pg20.13/
511 & 5x,
'PLASTICITY COUPLING FACTOR A. . . . . . . . . . .=',1pg20.13/
512 & 5x,
'RETURN MAPPING TYPE FLAG. . . . . . . . . . . . .=',i3/
513 & 5x,
' IRES = 1 NICE EXPLICIT '/
514 & 5x,
' IRES = 2 CUTTING PLANE SEMI-IMPLICIT (DEFAULT) '/)
516 & 5x,
'FIBER (DIR. 1) DAMAGE PARAMETERS: ',/
517 & 5x,
'--------------------------------- ',/
518 & 5x,
'TENSILE FIBER INITIAL DAMAGE STRAIN EFTI. . . . .=',1pg20.13/
519 & 5x,
'TENSILE FIBER ULTIMATE DAMAGE STRAIN EFTU . . . .=',1pg20.13/
520 & 5x,
'TENSILE FIBER ULTIMATE DAMAGE DFTU. . . . . . . .=',1pg20.13/
521 & 5x,
'COMPRESSION FIBER INITIAL DAMAGE STRAIN EFCI. . .=',1pg20.13/
522 & 5x,
'COMPRESSION FIBER ULTIMATE DAMAGE STRAIN EFCU . .=',1pg20.13/
523 & 5x,
'COMPRESSION FIBER ULTIMATE DAMAGE DFCU. . . . . .=',1pg20.13/
524 & 5x,
'BUCKLING DAMAGE MATRIX ON FIBER EFFECT FLAG . . .=',i3/
525 & 5x,
' IBUCK = 1 NOT ACTIVATED (DEFAULT)'/
526 & 5x,
' IBUCK = 2 ACTIVATED'/)
528 & 5x,
'SHEAR MATRIX DAMAGE PARAMETERS: ',/
529 & 5x,
'------------------------------- ',/
530 & 5x,
'SHEAR DAMAGE TYPE FLAG. . . . . . . . . . . . . .=',i3/
531 & 5x,
' ISH = 1 LINEAR (DEFAULT) '/
532 & 5x,
' ISH = 2 EXPONENTIAL '/
533 & 5x,
' ISH = 3 TABULATED CURVE '/
534 & 5x,
'DAMAGE TABULATED FUNCTION IFUNCD1 . . . . . . . .=',i10/
535 & 5x,
'DAMAGE SATURATION DSAT1 . . . . . . . . . . . . .=',1pg20.13/
536 & 5x,
'INITIAL DAMAGE ENERGY THRESHOLD Y0. . . . . . . .=',1pg20.13/
537 & 5x,
'CRITICAL DAMAGE ENERGY LIMIT YC . . . . . . . . .=',1pg20.13/
538 & 5x,
'FACTOR B. . . . . . . . . . . . . . . . . . . . .=',1pg20.13/)
540 & 5x,
'COMMON DAMAGE PARAMETERS: ',/
541 & 5x,
'------------------------- ',/
542 & 5x,
'DAMAGE MAXIMAL ALLOWED VALUE DMAX . . . . . . . .=',1pg20.13/
543 & 5x,
'ELEMENTARY SHEAR DAMAGE VALUE YR. . . . . . . . .=',1pg20.13/
544 & 5x,
'BRITTLE TRANSVERSE DAM. LIMIT FOR INTERFACE YSP .=',1pg20.13/)
546 & 5x,
'TRANSVERSE MATRIX DAMAGE PARAMETERS: ',/
547 & 5x,
'------------------------------------ ',/
548 & 5x,
'TRANSVERSE DAMAGE TYPE FLAG . . . . . . . . . . .=',i3/
549 & 5x,
' ITR = 1 LINEAR (DEFAULT) '/
550 & 5x,
' ITR = 2 EXPONENTIAL '/
551 & 5x,
' ITR = 3 TABULATED CURVE '/
552 & 5x,
'TENSILE DAMAGE TABULATED FUNCTION IFUNCD2 . . . .=',i10/
553 & 5x,
'TENSILE DAMAGE SATURATION DSAT2 . . . . . . . . .=',1pg20.13/
554 & 5x,'tensile initial damage energy threshold y0p . . .=
',1PG20.13/
555 & 5X,'tensile critical damage energy limit ycp. . . . .=
',1PG20.13/
556 & 5X,'(compression parameters
for shells only)
',/
557 & 5X,'compression damage tabulated
FUNCTION ifuncd2 . .=
',I10/
558 & 5X,'compression damage saturation dsat2c. . . . . . .=
',1PG20.13/
559 & 5X,'compression initial damage energy threshold y0pc.=
',1PG20.13/
560 & 5X,'compression critical damage energy limit ycp. . .=
',1PG20.13/)
562 & 5X,'fiber dir. 1 strain rate dependency parameters:
',/
563 & 5X,'-----------------------------------------------
',/
564 & 5X,'reference strain rate epsd11. . . . . . . . . . .=
',1PG20.13/
565 & 5X,'1st parameter
for elasticity rate dependency d11.=
',1PG20.13/
566 & 5X,'2nd parameter
for elasticity rate dependency n11.=',1pg20.13/
567 & 5x,
'1ST PARAMETER FOR RUPTURE RATE DEPENDENCY D11U. .=',1pg20.13/
568 & 5x,
'2ND PARAMETER FOR RUPTURE RATE DEPENDENCY N11U. .=',1pg20.13/
569 & 5x,
'RATE DEPENDENCY LAW TYPE. . . . . . . . . . . . .=',i3/
570 & 5x,
' LTYPE11 = 1 POWER LAW (DEFAULT) ',/
571 & 5x,
' LTYPE11 = 2 LINEAR LAW ',/
572 & 5x,
' LTYPE11 = 3 LOGARITHMIC LAW ',/
573 & 5x,
' LTYPE11 = 4 TANGENT HYPERBOLIC LAW ',/)
575 & 5x,
'TRANVERSE/SHEAR STRAIN RATE DEPENDENCY PARAMETERS:',/
576 & 5x,
'--------------------------------------------------',/
577 & 5x,
'REFERENCE STRAIN RATE EPSD12. . . . . . . . . . .=',1pg20.13/
578 & 5x,
'1ST PARAMETER FOR ELASTICITY RATE DEPENDENCY D22.=',1pg20.13/
579 & 5x,
'2ND PARAMETER FOR ELASTICITY RATE DEPENDENCY N22.=',1pg20.13/
580 & 5x,
'1ST PARAMETER FOR ELASTICITY RATE DEPENDENCY D12.=',1pg20.13/
581 & 5x,
'2ND PARAMETER FOR ELASTICITY RATE DEPENDENCY N12.=',1pg20.13/
582 & 5x,
'RATE DEPENDENCY LAW TYPE. . . . . . . . . . . . .=',i3/
583 & 5x,
' LTYPE12 = 1 POWER LAW (DEFAULT) ',/
584 & 5x,
' LTYPE12 = 2 LINEAR LAW ',/
585 & 5x,
' LTYPE12 = 3 LOGARITHMIC LAW ',/
586 & 5x,
' LTYPE12 = 4 TANGENT HYPERBOLIC LAW ',/)
588 & 5x,
'YIELD STRESS STRAIN RATE DEPENDENCY PARAMETERS: ',/
589 & 5x,
'----------------------------------------------- ',/
590 & 5x,
'REFERENCE STRAIN RATE EPSDR0. . . . . . . . . . .=',1pg20.13/
591 & 5x,
'1ST PARAM. FOR YIELD STRESS RATE DEPENDENCY DR0 .=',1pg20.13/
592 & 5x,
'2ND PARAM. FOR YIELD STRESS RATE DEPENDENCY NR0 .=',1pg20.13/
593 & 5x,
'RATE DEPENDENCY LAW TYPE. . . . . . . . . . . . .=',i3/
594 & 5x,
' LTYPER0 = 1 POWER LAW (DEFAULT) ',/
595 & 5x,
' LTYPER0 = 2 LINEAR LAW ',/
596 & 5x,
' LTYPER0 = 3 LOGARITHMIC LAW ',/
597 & 5x,
' LTYPER0 = 4 TANGENT HYPERBOLIC LAW ',/)
599 & 5x,
'STRAIN RATE FILTERING CUTOFF FREQUENCY FCUT . . .=',1pg20.13/)