42 . UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,NFUNC ,
43 . MAXFUNC ,IFUNC ,PARMAT ,MAT_ID ,PM ,
44 . ISRATE ,IMATVIS ,TITR ,UNITAB ,LSUBMODEL,
70#include "implicit_f.inc"
79 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
80 INTEGER,
INTENT(IN) :: MAT_ID,MAXUPARAM,MAXFUNC
81 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: PM
82 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
83 INTEGER,
INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC,ISRATE,IMATVIS,JALE
84 INTEGER,
DIMENSION(MAXFUNC) ,
INTENT(INOUT) :: IFUNC
85 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
86 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
87 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
92 INTEGER :: I,J,ILAW,NRATEN,NRATEP,LFUNC,IUNLOAD,IFUNCR,IFUNCK,
93 . IFLAG,NPAR_FOAM,ICLOS,INCGAS
94 my_real :: E,NU,G,RHOA,RHO0,RHOR,VISC,VISCV,EXPO,HYS,FRAC,
95 . FCUT, A1,A2,E0,EMAX,EPSMAX,P0,AA,BB,KK,TAUX,BULK,EINT0,
96 . gamma,pext,fp_ini,rhoext,eint_ext,fscal_unit
97 INTEGER ,
DIMENSION(15) :: FLOAD,FUNLOAD
98 my_real ,
DIMENSION(30) :: rate,yfac,rload,sload,runload,sunload
99 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
101 is_encrypted = .false.
102 is_available = .false.
113 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT_E' ,e0 ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv(
'E_Max' ,emax ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_EPS' ,epsmax ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT_FP0' ,fp_ini ,is_available, lsubmodel, unitab
122 CALL hm_get_floatv(
'MAT_asrate' ,fcut ,is_available, lsubmodel, unitab)
123 CALL hm_get_intv (
'ISRATE' ,israte ,is_available,lsubmodel)
124 CALL hm_get_intv (
'NRATEP' ,nratep ,is_available,lsubmodel)
125 CALL hm_get_intv (
'NRATEN' ,nraten ,is_available,lsubmodel)
126 CALL hm_get_intv (
'MAT_Iflag' ,iunload ,is_available,lsubmodel)
127 CALL hm_get_floatv(
'MAT_SHAPE' ,expo ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT_HYST' ,hys ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv(
'Lqud_Rho_g' ,rhoa ,is_available, lsubmodel, unitab)
149 CALL hm_get_floatv(
'MAT_P0' ,p0 ,is_available, lsubmodel, unitab)
150 CALL hm_get_floatv(
'GAMMA' ,gamma ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv(
'MAT_POROS' ,frac ,is_available, lsubmodel, unitab)
153 CALL hm_get_floatv(
'Rho_Gas' ,rhoext ,is_available, lsubmodel, unitab)
154 CALL hm_get_floatv(
'PEXT' ,pext ,is_available, lsubmodel, unitab)
155 CALL hm_get_intv (
'ISFLAG' ,iclos ,is_available,lsubmodel)
156 CALL hm_get_intv ('gflag
' ,INCGAS ,IS_AVAILABLE,LSUBMODEL)
158 CALL HM_GET_FLOATV('mat_alpha
' ,AA ,IS_AVAILABLE, LSUBMODEL, UNITAB)
159 CALL HM_GET_FLOATV('mat_beta
' ,BB ,IS_AVAILABLE, LSUBMODEL, UNITAB)
160 CALL HM_GET_FLOATV('tau_shear
' ,TAUX ,IS_AVAILABLE, LSUBMODEL, UNITAB)
161 CALL HM_GET_FLOATV('mat_k
' ,KK ,IS_AVAILABLE, LSUBMODEL, UNITAB)
163 CALL HM_GET_INTV ('fun_a1
' ,IFUNCK ,IS_AVAILABLE,LSUBMODEL)
164 CALL HM_GET_INTV ('fun_b1
' ,IFUNCR ,IS_AVAILABLE,LSUBMODEL)
166 CALL HM_GET_FLOATV_DIM('scale_load
',FSCAL_UNIT,IS_AVAILABLE,LSUBMODEL,UNITAB)
170 IF (NRATEP == 0) THEN
171 CALL ANCMSG(MSGID=866,
173 . ANMODE=ANINFO_BLIND,
177.AND..OR.
IF (NRATEN == 0 (IUNLOAD == 0 IUNLOAD == 1) ) THEN
178 CALL ANCMSG(MSGID=867,
180 . ANMODE=ANINFO_BLIND,
187 IF (SLOAD(I) == ZERO) SLOAD(I) = ONE*FSCAL_UNIT
192 NFUNC = NRATEP + NRATEN
195 IF (SUNLOAD(I) == ZERO) SUNLOAD(I) = ONE*FSCAL_UNIT
196 IFUNC(J) = FUNLOAD(I)
202 IF (IFUNC(I) == 0)THEN
203 CALL ANCMSG(MSGID=126,
205 . ANMODE=ANINFO_BLIND_1,
212 IFUNC(NFUNC + 1) = IFUNCK
213 IFUNC(NFUNC + 2) = IFUNCR
218 IF (EMAX == ZERO) EMAX = E0
219 IF (EPSMAX == ZERO) EPSMAX = ONE
220 IF (GAMMA == ZERO) GAMMA = ONEP4
221 IF (RHOEXT == 0) RHOEXT = RHOA
222 IF (EXPO == ZERO) EXPO = ONE
223 IF (HYS == ZERO) HYS = ONE
224 IF (IUNLOAD == 0) IUNLOAD = 1
225 ISRATE = 1 ! force strain rate computation
226 IF (FCUT == ZERO) FCUT = INFINITY
228 EINT0 = P0/(GAMMA - ONE)
229 EINT_EXT = PEXT/(GAMMA - ONE)
230 A1 = (EMAX-E0) / EPSMAX
231 G = HALF*E0 / (ONE + NU)
232 BULK = E0/THREE / (ONE - TWO*NU)
233 EINT0 = P0/(GAMMA - ONE)
234 EINT_EXT = PEXT/(GAMMA - ONE)
244 UPARAM(I + 8) = RATE(I)
245 UPARAM(I + 8 + NFUNC) = YFAC(I)
247 UPARAM(2*NFUNC + 9) = IUNLOAD
248 UPARAM(2*NFUNC + 10) = EXPO
249 UPARAM(2*NFUNC + 11) = HYS
250 UPARAM(2*NFUNC + 12) = EMAX
251 NPAR_FOAM = 13 + 2*NFUNC
252 UPARAM(NPAR_FOAM + 1) = RHOA
253 UPARAM(NPAR_FOAM + 2) = P0
254 UPARAM(NPAR_FOAM + 3) = GAMMA
255 UPARAM(NPAR_FOAM + 4) = FRAC
256 UPARAM(NPAR_FOAM + 5) = PEXT
257 UPARAM(NPAR_FOAM + 6) = FP_INI
258 UPARAM(NPAR_FOAM + 7) = EINT0
259 UPARAM(NPAR_FOAM + 8) = KK
261 NUPARAM = NPAR_FOAM + 8
270 PARMAT(16) = 2 ! Formulation for solid elements time step computation
271 PARMAT(17) = (ONE - TWO*NU)/(ONE - NU)
288 CALL INIT_MAT_KEYWORD(MATPARAM,"INCOMPRESSIBLE")
290 CALL INIT_MAT_KEYWORD(MATPARAM,"COMPRESSIBLE")
292 CALL INIT_MAT_KEYWORD(MATPARAM,"HOOK")
293 ! Properties compatibility
294 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
298 WRITE(IOUT,1000) TRIM(TITR),MAT_ID,77
300 IF (IS_ENCRYPTED) THEN
301 WRITE(IOUT,'(5x,a,//)
')'confidential data
'
303 WRITE(IOUT,1200) RHO0
304 WRITE(IOUT,1300) E0,NU,EMAX,EPSMAX,FP_INI
305 WRITE(IOUT,1400) FCUT,ISRATE,NRATEP,NRATEN,IUNLOAD,EXPO,HYS
306 WRITE(IOUT,1500)(IFUNC(J),RATE(J),YFAC(J),J=1,NRATEP)
307 WRITE(IOUT,1600)(IFUNC(J+NRATEP),RATE(J+NRATEP),YFAC(J+NRATEP),J=1,NRATEN)
309 WRITE(IOUT,2100) RHOA,P0,GAMMA,FRAC,IFUNCR
311 WRITE(IOUT,2300) RHOEXT,PEXT,ICLOS,INCGAS
313 WRITE(IOUT,3100) AA,BB,TAUX,KK,IFUNCK
318 & 5X,'material number. . . . . . . . . . . . . . .=
',I10/,
319 & 5X,'material law . . . . . . . . . . . . . . . .=
',I10/)
321 &(5X,'material :
tabulated non-linear visco elastic(law77)
',/,
322 & 5X,'-----------------------------------------------------
',/)
324 & 5X,'initial density . . . . . . . . . . . . .=
',1PG20.13/)
326 & 5X,'initial young
''s modulus . . . . . . . . . .=
',1PG20.13/,
327 & 5X,'poisson
''s ratio . . . . . . . . . . . . . .=
',1PG20.13/,
328 & 5X,'maximum young
''s modulus . . . . . . . . . .=
',1PG20.13/,
329 & 5X,'maximum strain . . . . . . . . . . . . . .=
',1PG20.13/,
330 & 5X,'initial foam pressure. . . . . . . . . . . .=
',1PG20.13/)
332 & 5X,'strain rate cutoff frequency . . . . . . . .=
',1PG20.13/,
333 & 5X,'flag
for strain rate . . . . . . . .=
',I10/,
334 & 5X,'number of load stress functions . . . . . .=
',I10/,
335 & 5X,'number of unload stress functions. . . . . .=
',I10/,
336 & 5X,'choice of unloading formulation. . . . . . .=
',I10/,
337 & 5X,'shape factor
for unloading . . . . . . . . .=
',1PG20.13/,
338 & 5X,'hysteretic unloading factor . . . . . . . .=
',1PG20.13 )
340 & 5X,'load yield stress
FUNCTION number. . . . . .=
',I10/,
341 & 5X,'strain rate. . . . . . . . . . . . . . . . .=
',1PG20.13/,
342 & 5X,'scale factor . . . . . . . . . . . . . . . .=
',1PG20.13/)
344 & 5X,'unload yield stress function number. . . . .=
',I10/,
345 & 5X,'strain rate. . . . . . . . . . . . . . . . .=
',1PG20.13/,
346 & 5X,'scale factor . . . . . . . . . . . . . . . .=
',1PG20.13/)
348 & 5X,' gas parameters
' ,/,
349 & 5X,' -----------------
',/)
351 & 5X,'density. . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
352 & 5X,'p0 . . . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
353 & 5X,'gamma. . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
354 & 5X,'initial gas fraction (R) . . . . . . . . . .=
',1PG20.13/,
355 & 5X,'scale function
for gas fraction r(V/V0). . .=
',I10/)
357 & 5X,' external gas parameters
' ,/,
358 & 5X,' -----------------------
',/)
360 & 5X,'density. . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
361 & 5X,'pext. . . . . . . .. . . . . . . . . . . . .=
',1PG20.13/,
362 & 5X,'flag
for closed foam . . . . . . . . . . . .=
',I10/
363 & 5X,'incomnig gas flag. . . . . . . . . . . . . .=
',I10/ )
365 & 5X,' darcy parameters
',/,
366 & 5X,' -----------------
',/)
368 & 5X,'a. . . . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
369 & 5X,'beta . . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
370 & 5X,'taux . . . . . . . . . . . . . . . . . . . .=
',1PG20.13/,
371 & 5X,'initial
',1PG20.13/
372 & 5X,'scale function
for permeability k(V/V0). . .=
',I10/ )