43 . MFUNC ,MAXFUNC ,MTAG ,PARMAT ,UNITAB ,
44 . IMATVIS ,PM ,LSUBMODEL, ID ,TITR ,
75#include "implicit_f.inc"
84 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
85 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: PM
86 my_real,
DIMENSION(100) ,
INTENT(INOUT) :: PARMAT
87 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
89 INTEGER,
INTENT(INOUT) :: MFUNC,NUPARAM
90INTEGER,
DIMENSION(MAXFUNC) ,
INTENT(INOUT) :: IFUNC
91 TYPE(MLAW_TAG_),
INTENT(INOUT) :: MTAG
92 INTEGER,
INTENT(IN) :: ID,MAXFUNC,MAXUPARAM
93 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
95 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
99 INTEGER :: NBMAT, MAT_ID
100 INTEGER :: I,J,NRATE,NPS,ILAW,NFUNC,ITEST,N_NETWORK, FLAG_HE, , EXPPL,
101 . FLAG_PL,NHYPER,NET,N,,SHIFT,
102 . nmul,ntemp,nplas,nvisc(10),flag_visc(10)
103 my_real :: rho0, e,nu,g,rbulk,tauref_unit,
104 . c1,c2,c3,c4,c5,mu,lm,d,beta,facpl, scale1, scale2,scalefac,
105 . c10,c01,c20,c11,c02 ,fac_unit,fac_sm,fac_bm,
106 . c30, c21,c12,c03,sb,d1,d2,d3,ff,epshat,tauy ,
108 . expm(10),ksi(10),stiffn(10),b0(10),expn(10),tauref(10)
109 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
113 is_encrypted = .false.
114 is_available = .false.
123 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
147 CALL hm_get_intv(
'MAT_N_net' , n_network, is_available, lsubmodel)
148 CALL hm_get_intv(
'MAT_Flag_HE', flag_he , is_available, lsubmodel)
149 CALL hm_get_intv(
'MAT_Flag_Cr', flag_pl , is_available, lsubmodel)
151 IF (n_network > 10 )
THEN
154 . anmode=aninfo_blind_2,
167 IF (flag_he == 1)
THEN
169 CALL hm_get_floatv(
'MAT_C_10' ,c10 ,is_available, lsubmodel, unitab)
170 CALL hm_get_floatv(
'MAT_C_01' ,c01 ,is_available, lsubmodel, unitab)
171 CALL hm_get_floatv(
'MAT_C_20' ,c20 ,is_available, lsubmodel, unitab)
172 CALL hm_get_floatv(
'MAT_C_11' ,c11 ,is_available, lsubmodel, unitab)
173 CALL hm_get_floatv(
'MAT_C_02' ,c02 ,is_available, lsubmodel, unitab)
175 CALL hm_get_floatv(
'MAT_C_30' ,c30 ,is_available, lsubmodel, unitab)
176 CALL hm_get_floatv(
'MAT_C_21' ,c21 ,is_available, lsubmodel, unitab)
177 CALL hm_get_floatv(
'MAT_C_12' ,c12 ,is_available, lsubmodel, unitab)
178 CALL hm_get_floatv(
'MAT_C_03' ,c03 ,is_available, lsubmodel, unitab)
180 CALL hm_get_floatv(
'MAT_D_1' ,d1 ,is_available, lsubmodel, unitab)
181 CALL hm_get_floatv(
'MAT_D_2' ,d2 ,is_available, lsubmodel, unitab)
182 CALL hm_get_floatv(
'MAT_D_3' ,d3 ,is_available, lsubmodel, unitab)
185 ELSEIF (flag_he == 2)
THEN
187 CALL hm_get_floatv(
'MAT_MUE1' ,mu ,is_available, lsubmodel, unitab)
188 CALL hm_get_floatv('mat_d
' ,D ,IS_AVAILABLE, LSUBMODEL, UNITAB)
189 CALL HM_GET_FLOATV('lambda
' ,LM ,IS_AVAILABLE, LSUBMODEL, UNITAB)
191 CALL HM_GET_INTV ('itype
' ,ITEST ,IS_AVAILABLE, LSUBMODEL)
192 CALL HM_GET_INTV ('mat_fct_id_ab
' ,IFUNC(1) ,IS_AVAILABLE, LSUBMODEL)
193 CALL HM_GET_FLOATV('mat_nu
' ,NU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
194 CALL HM_GET_FLOATV('fscale_ab
' ,SCALEFAC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
195 IF(SCALEFAC == ZERO)THEN
196 CALL HM_GET_FLOATV_DIM('fscale_ab
' ,FAC_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
197 SCALEFAC = ONE * FAC_UNIT
199 IF(ITEST == 0) ITEST = 1
201 IF(IFUNC(1) /= 0) NFUNC = 1
202 !--------------------------------------
203 ELSEIF (FLAG_HE == 3)THEN !neo-hook
205 CALL HM_GET_FLOATV('mat_c_10' ,c10 ,is_available, lsubmodel, unitab)
206 CALL hm_get_floatv(
'MAT_D_1' ,d1 ,is_available, lsubmodel, unitab)
209 ELSEIF (flag_he == 4)
THEN
211 CALL hm_get_floatv(
'MAT_C_10' ,c10 ,is_available, lsubmodel, unitab)
212 CALL hm_get_floatv(
'MAT_C_01' ,c01 ,is_available, lsubmodel, unitab)
213 CALL hm_get_floatv(
'MAT_D_1' ,d1 ,is_available, lsubmodel, unitab)
216 ELSEIF (flag_he == 5)
THEN
218 CALL hm_get_floatv(
'MAT_C_10' ,c10 ,is_available, lsubmodel, unitab)
219 CALL hm_get_floatv(
'MAT_C_20' ,c20 ,is_available, lsubmodel, unitab)
220 CALL hm_get_floatv(
'MAT_C_30' ,c30 ,is_available, lsubmodel, unitab)
221 CALL hm_get_floatv(
'MAT_D_1' ,d1 ,is_available, lsubmodel, unitab)
224 ELSEIF (flag_he == 13)
THEN
226 CALL hm_get_intv (
'MAT_fct_ID_SM' ,ifunc(1) ,is_available, lsubmodel)
227 CALL hm_get_intv (
'MAT_fct_ID_BM' ,ifunc(2) ,is_available, lsubmodel)
228 CALL hm_get_floatv(
'MAT_Fscale_SM' ,scale1 ,is_available, lsubmodel, unitab)
229 CALL hm_get_floatv(
'MAT_Fscale_BM' ,scale2 ,is_available, lsubmodel, unitab)
230 IF(scale1 == zero)
THEN
232 scale1 = one * fac_sm
234 IF(scale2 == zero
THEN
236 scale2 = one * fac_bm
241 IF(ifunc(1)==0 .OR. ifunc(2)==0)
THEN
244 . anmode=aninfo_blind_2,
253 . anmode=aninfo_blind_2,
263 IF (flag_pl == 1)
THEN
265 CALL hm_get_floatv(
'MAT_A_pl' ,facpl ,is_available, lsubmodel, unitab)
266 CALL hm_get_floatv(
'MAT_Sigma_pl' ,tauy ,is_available, lsubmodel, unitab)
267 CALL hm_get_floatv(
'MAT_F_pl' ,ff ,is_available, lsubmodel, unitab)
269 CALL hm_get_intv (
'MAT_N_pl' ,exppl ,is_available, lsubmodel)
271 IF(exppl == 0) exppl=1
272 IF(facpl == zero) facpl=one
274 IF(ff == zero) ff=one
275 IF(tauy == zero) tauy = one
286 DO net = 1, n_network
291 IF (flag_visc(net) == 1)
THEN
300 IF(tauref(net) == zero)
THEN
302 tauref(net) = one * tauref_unit
307 ELSEIF (flag_visc(net) == 2)
THEN
315 ELSEIF (flag_visc(net) == 3)
THEN
324 . anmode=aninfo_blind_2,
332 nuvar = nuvar + shift
340 sb = sb + stiffn(net)
344 IF (flag_he == 1 .OR. flag_he == 3 .OR.flag_he == 4 .OR.flag_he == 5 )
THEN
346 IF(d2 /= zero ) d2 = one/d2
347 IF(d3 /= zero ) d3 = one/d3
348 g = two * (c10 + c01) *(sb + one)
351 rbulk= two*d1 *(one + sb)
352 nu = (three*rbulk -two*g)/(three*rbulk + g)/two
353 e = nine*rbulk*g/(three*rbulk + g)
358 rbulk = two_third*g*(one + nu)/(one-two*nu)
359 d1 = rbulk / two ! 1/d1 a voir si on suprime pas le terme avec j
363 ELSEIF (flag_he == 2)
THEN
370 IF(d == zero ) d = em20
371 IF(lm == zero) lm = seven
373 g = mu*(one + three*beta /five + eighty19*beta*beta/175.
374 . + 513.*beta**3/875. + 42039.*beta**4/67375.)*(sb + one)
375 rbulk = two *(one + sb) /d
376 e = nine*rbulk*g/(three*rbulk + g)
378 nu = (three*rbulk -two*g)/(three*rbulk + g)/two
381 IF (nu == zero) nu= 0.495
388 uparam(1) = n_network
401 IF (flag_he == 1 .OR. flag_he == 3 .OR.flag_he == 4 .OR.flag_he == 5 )
THEN
402 uparam(tab + 1) = c10
403 uparam(tab + 2) = c01
404 uparam(tab + 3) = c20
405 uparam(tab + 4) = c11
406 uparam(tab + 5) = c02
407 uparam(tab + 6) = c30
408 uparam(tab + 7) = c21
409 uparam(tab + 8) = c12
410 uparam(tab + 9) = c03
411 uparam(tab + 10) = d1
412 uparam(tab + 11) = d2
413 uparam(tab + 12) = d3
415 ELSEIF (flag_he == 2)
THEN
422 uparam(tab + 7) = one/d
423 uparam(tab + 8) = beta
424 uparam(tab + 9) = itest
426 uparam(tab +11) = scalefac
429 uparam(tab + 1) = scale1
430 uparam(tab + 2) = scale2
431 uparam(tab + 3) = nfunc
438 IF (flag_pl == 1)
THEN
441 uparam(tab + 2) = epshat
442 uparam(tab + 3) = tauy
443 uparam(tab + 4) = exppl
444 uparam(tab + 5) = facpl
450 uparam(tab + 1) = stiffn(n)
451 uparam(tab + 2) = flag_visc(n)
452 uparam(tab + 3) = nvisc(n)
453 IF (flag_visc(n) == 1)
THEN
454 IF(expm(n) == zero)expm(n) = one
455 IF(expc(n) == zero)expc(n) = -0.700000000
456 IF(ksi(n) == zero)ksi(n) = em02
457 uparam(tab + 4) = a(n)
458 uparam(tab + 5) = expc(n)
459 uparam(tab + 6) = expm(n)
460 uparam(tab + 7) = ksi(n)
461 uparam(tab + 8) = tauref(n)
462 tab = tab + 3 + nvisc(n)
464 ELSEIF (flag_visc(n) == 2)
THEN !hperbolic sine
465 uparam(tab + 4) = a(n)
466 uparam(tab + 5) = b0(n)
467 uparam(tab + 6) = expn(n)
468 tab = tab + 3 + nvisc(n)
469 ELSEIF (flag_visc(n) == 3)
THEN
470 uparam(tab + 4) = a(n)
471 uparam(tab + 5) = expn(n)
472 uparam(tab + 6) = expm(n)
473 tab = tab + 3 + nvisc(n)
476 IF (flag_he /= 13)
THEN
478 uparam(tab + 2) = rbulk
491 CALL INIT_MAT_KEYWORD(MATPARAM,"hook
")
492 ! Properties compatibility
493 CALL INIT_MAT_KEYWORD(MATPARAM,"solid_isotropic
")
497 WRITE(IOUT,1001) TRIM(TITR),ID,100
499 IF (IS_ENCRYPTED)THEN
500 WRITE(IOUT,'(5X,A,//)')'CONFIDENTIAL DATA'
503 WRITE(IOUT,900)N_NETWORK, FLAG_HE,FLAG_PL
504 IF (FLAG_HE == 1) THEN
505 WRITE(IOUT,1100)C10,C01,C20,C11,C02,
506 . C30, C21,C12,C03,D1,D2,D3
508 ELSEIF (FLAG_HE == 2) THEN
509 WRITE(IOUT,2000)MU,D, LM
510 IF(IFUNC(1) > 0) THEN
512 WRITE(IOUT,2200)IFUNC(1),SCALEFAC, NU
513 ELSEIF(ITEST == 2) THEN
514 WRITE(IOUT,2300)IFUNC(1),SCALEFAC, NU
515 ELSEIF(ITEST == 3) THEN
516 WRITE(IOUT,2400)IFUNC(1),SCALEFAC, NU
519 ELSEIF (FLAG_HE == 3) THEN
520 WRITE(IOUT,2001)C10,D1
521 ELSEIF (FLAG_HE == 4) THEN
522 WRITE(IOUT,2002)C10,C01,D1
523 ELSEIF (FLAG_HE == 5) THEN
524 WRITE(IOUT,2003)C10,C20,C30,D1
525 ELSEIF (FLAG_HE == 13) THEN
526 WRITE(IOUT,2005)IFUNC(1),IFUNC(2),SCALE1,SCALE2
528 IF (FLAG_PL == 1) THEN
529 WRITE(IOUT,2004) FACPL , TAUY, EXPPL,FF,EPSHAT
533 IF (FLAG_VISC(N) == 1)THEN
534 WRITE(IOUT,1300)STIFFN(N),A(N),EXPC(N),EXPM(N),KSI(N) , TAUREF(N)
535 ELSEIF (FLAG_VISC(N) == 2)THEN !hperbolic sine
536 WRITE(IOUT,1400)STIFFN(N),A(N),B0(N),EXPN(N)
537 ELSEIF (FLAG_VISC(N) == 3)THEN !power law
538 WRITE(IOUT,1500)STIFFN(N),A(N),EXPN(N),EXPM(N)
542 IF (FLAG_HE /= 13)THEN
543 WRITE(IOUT,1200)G,RBULK, NU
548 & 5X,' PARALLEL RHEOLOGICAL FRAMEWORK : ',/,
549 & 5X,' -------------------------------- ',/)
552 & 5X,'MATERIAL NUMBER. . . . . . . . . . . . . =',I10/,
553 & 5X,'MATERIAL LAW . . . . . . . . . . . . . . =',I10/)
555 & 5X,'INITIAL DENSITY . . . . . . . . . . . . .=',1PG20.13/)
557 & 5X,'NUMBER OF SECONDARY NETWORKS . . . . . .= ',I10/
558 & 5X,'FLAG FOR HYPERELASTIC LAW. . . . . . . .= ',I10/
559 & 5X,'FLAG FOR PLASTICITY. . . . . . . . . . .= ',I10)
561 & 5X,'HYPERELASTIC MODEL = PPOLYNOMIAL ',/,
562 & 5X,'C10 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
563 & 5X,'C01 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
564 & 5X,'C20 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
565 & 5X,'C11 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
566 & 5X,'C02 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
567 & 5X,'C30 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
568 & 5X,'C21 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
569 & 5X,'C12 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
570 & 5X,'C03 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
571 & 5X,'1/D1 . . . . . . . . . . . . . . . . . .=',1PG20.13/
572 & 5X,'1/D2 . . . . . . . . . . . . . . . . . .=',1PG20.13/
573 & 5X,'1/D3 . . . . . . . . . . . . . . . . . .=',1PG20.13/)
575 & 5X,'HYPERELASTIC MODEL = ARRUDA-BOYCE ',/,
576 & 5X,'MATERIAL CONSTANT MU . . . . . . . . . .=',1PG20.13/
577 & 5X,'VOLUMETRIC MATERIAL PARAMETER. . . . . .=',1PG20.13/
578 & 5X,'LOCKING STRETCH. . . . . . . . . . . . .=',1PG20.13//)
580 & 5X,'UNIAXIAL DATA TEST CURVE . . . . . . .=',I10/
581 & 5X,'SCALE FACTOR FOR STRESS IN FUNCTION. . .=',1PG20.13/
582 & 5X,'POISSON RATIO. . . . . . . . . . . . . .=',1PG20.13//)
584 & 5X,'EQUIBIAXIAL DATA TEST CURVE. . . . . . .=',I10/
585 & 5X,'SCALE FACTOR FOR STRESS IN FUNCTION. . .=',1PG20.13/
586 & 5X,'POISSON RATIO. . . . . . . . . . . . . .=',1PG20.13//)
588 & 5X,'PLANAR DATA TEST CURVE . . . . . . . .=',I10/
589 & 5X,'SCALE FACTOR FOR STRESS IN FUNCTION. . .=',1PG20.13/
590 & 5X,'POISSON RATIO. . . . . . . . . . . . . .=',1PG20.13//)
592 & 5X,'HYPERELASTIC MODEL = NEO-HOOKEAN ',/,
593 & 5X,'C10 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
594 & 5X,'1/D1 . . . . . . . . . . . . . . . . . .=',1PG20.13//)
596 & 5X,'HYPERELASTIC MODEL = MOONEY-RIVLIN ',/,
597 & 5X,'C10 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
598 & 5X,'C01 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
599 & 5X,'1/D1 . . . . . . . . . . . . . . . . . .=',1PG20.13//)
601 & 5X,'HYPERELASTIC MODEL = YEOH ',/,
602 & 5X,'C10 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
603 & 5X,'C20 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
604 & 5X,'C30 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
605 & 5X,'1/D1 . . . . . . . . . . . . . . . . . .=',1PG20.13//)
607 & 5X,'HYPERELASTIC MODEL = TEMPERATURE DEPENDENT NEO HOOK',/,
608 & 5X,'FUNCTION ID FOR MU. . . . . . . . . . . .=',I10/
609 & 5X,'FUNCTION ID FOR D . . . . . . . . . . . .=',I10/
610 & 5X,'SCALE FACTOR FOR FUNCTION 1 . . . . . . .=',1PG20.13/
611 & 5X,'SCALE FACTOR FOR FUNCTION 2 . . . . . . .=',1PG20.13//)
614 & 5X,'PLASTICITY PARAMETERS IN EQUILIBRIUM NETWORK',/,
615 & 5X,'A FACTOR. . . . . . . . . . . . . . . . .=',1PG20.13/
616 & 5X,'FLOW RESISTANCE . . . . . . . . . . . . .=',1PG20.13/
617 & 5X,'EXPONENT FOR FLOW RATE. . . . . . . . . .=',I10/
618 & 5X,'FINAL FLOW RESISTANCE . . . . . . . . . .=',1PG20.13/
619 & 5X,'CHARACTERISTIC STRAIN . . . . . . . . . .=',1PG20.13//)
621 & 5X,'PARAMETERS FOR VISCOUS MODEL FOR NETWORK : ',I10)
623 & 5X,'BERGSTROM BOYCE VISCOUS MODEL ',/,
624 & 5X,'STIFFNESS SCALING COEFFICIENT. . . . . . =',1PG20.13/
625 & 5X,'A. . . . . . . . . . . . . . . . . . . . =',1PG20.13/
626 & 5X,'EXPONENT C . . . . . . . . . . . . . . . =',1PG20.13/
627 & 5X,'EXPONENT M . . . . . . . . . . . . . . . =',1PG20.13/
628 & 5X,'KSI. . . . . . . . . . . . . . . . . . . =',1PG20.13/
629 & 5X,'REFERENCE STRESS . . . . . . . . . . . . =',1PG20.13)
631 & 5X,'HYPERBOLIC SINE VISCOUS MODEL ',/,
632 & 5X,'STIFFNESS SCALING COEFFICIENT. . . . . . =',1PG20.13/
633 & 5X,'A. . . . . . . . . . . . . . . . . . . . =',1PG20.13/
634 & 5X,'COEFFICIENT B0 . . . . . . . . . . . . . =',1PG20.13/
635 & 5X,'EXPONENT N . . . . . . . . . . . . . . . =',1PG20.13/)
637 & 5X,'POWER LAW VISCOUS MODEL ',/,
638 & 5X,'STIFFNESS SCALING COEFFICIENT. . . . . . =',1PG20.13/
639 & 5X,'A. . . . . . . . . . . . . . . . . . . . =',1PG20.13/
640 & 5X,'EXPONENT N . . . . . . . . . . . . . . . =',1PG20.13/
641 & 5X,'EXPONENT M . . . . . . . . . . . . . . . =',1PG20.13/)
643 & 5X,'INITIAL SHEAR MODULUS . . . . . . . . . =',1PG20.13/
644 & 5X,'INITIAL BULK MODULUS. . . . . . . . . . =',1PG20.13/
645 & 5X,'POISSON RATIO . . . . . . . . . . . . . =',1PG20.13//)