40 . UPARAM ,MAXUPARAM,NUPARAM ,NUVAR ,IFUNC ,
41 . MAXFUNC ,NFUNC ,PARMAT ,UNITAB ,PM ,
42 . ISRATE ,ID ,TITR ,LSUBMODEL,IMATVIS ,
67#include "implicit_f.inc"
76 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
77 INTEGER,
INTENT(IN) :: ID,MAXUPARAM,MAXFUNC
78 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: PM
79 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
80 INTEGER,
INTENT(INOUT) :: IMATVIS
81 INTEGER,
INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC,ISRATE
82 INTEGER,
DIMENSION(MAXFUNC)INTENT(INOUT) :: IFUNC
83 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
84 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
85 TYPE(),
DIMENSION(*),
INTENT(IN) :: LSUBMODEL
87 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MATPARAM
91 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
92 INTEGER :: FCT_ID,IFLAG,ILAW
93 my_real :: RHO0,RHOR,E,E1,E2,ET,POISSON,POISSONT,RELVEXP,MU,LAMBDA,
94 . C1,C2,C3,PMIN,P0,PHI,GAMA0,BULK,FSCAL,FSCAL_UNIT,ASRATE
96 is_encrypted = .false.
97 is_available = .false.
105 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
108 CALL hm_get_floatv(
'MAT_E' ,e ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'MAT_NU' ,poisson ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv(
'MAT_E1' ,e1 ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv('mat_e2
' ,E2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
112 CALL HM_GET_FLOATV('mat_n
' ,RELVEXP ,IS_AVAILABLE, LSUBMODEL, UNITAB)
114 CALL HM_GET_FLOATV('mat_co1
' ,C1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
115 CALL HM_GET_FLOATV('mat_co2
' ,C2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
116 CALL HM_GET_FLOATV('mat_co3
' ,C3 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
117 CALL HM_GET_INTV ('itype
' ,IFLAG ,IS_AVAILABLE, LSUBMODEL)
118 CALL HM_GET_FLOATV('mat_pc
' ,PMIN ,IS_AVAILABLE, LSUBMODEL, UNITAB)
120 CALL HM_GET_INTV ('fun_a1
' ,FCT_ID ,IS_AVAILABLE, LSUBMODEL)
121 CALL HM_GET_FLOATV('ifscale
' ,FSCAL ,IS_AVAILABLE, LSUBMODEL, UNITAB)
122 CALL HM_GET_INTV ('fsmooth
' ,ISRATE ,IS_AVAILABLE, LSUBMODEL)
123 CALL HM_GET_FLOATV('fcut
' ,ASRATE ,IS_AVAILABLE, LSUBMODEL, UNITAB)
125 CALL HM_GET_FLOATV('mat_etan
' ,ET ,IS_AVAILABLE, LSUBMODEL, UNITAB)
126 CALL HM_GET_FLOATV('mat_nut
' ,POISSONT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
127 CALL HM_GET_FLOATV('mat_eta2
' ,MU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
128 CALL HM_GET_FLOATV('mat_eta1
' ,LAMBDA ,IS_AVAILABLE, LSUBMODEL, UNITAB)
130 CALL HM_GET_FLOATV('mat_p0
' ,P0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
131 CALL HM_GET_FLOATV('mat_phi
' ,PHI ,IS_AVAILABLE, LSUBMODEL, UNITAB)
132 CALL HM_GET_FLOATV('mat_gama0
' ,GAMA0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
136 CALL HM_GET_FLOATV_DIM('ifscale
' ,FSCAL_UNIT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
137 IF (FSCAL == ZERO) FSCAL = ONE*FSCAL_UNIT
139 IF (MU <= ZERO) MU = EP20
140 IF (PMIN == ZERO) PMIN =-EP20
141 IF (PMIN > ZERO) PMIN =-PMIN
142 BULK = THIRD*E/(ONE - TWO*POISSON)
144 !----------------------------------------------------------
145 ! Filtering frequency
146 IF (ASRATE /= ZERO) THEN
147 ! If a filtering frequency is given by the user
150 ! If no filtering frequency is given but the flag is activated
151 IF (ISRATE /= 0) THEN
152 ASRATE = 10000.0D0*UNITAB%FAC_T_WORK
153 ! If no filtering frequency and no flag is activated => no filtering
158 !----------------------------------------------------------
159 ! Checking filtering and strain-rate dependency
160.OR..AND.
IF (((C1 /= ZERO)(E1 /= ZERO))(ISRATE == 0)) THEN
161 CALL ANCMSG(MSGID=1220,
162 . MSGTYPE=MSGWARNING,
163 . ANMODE=ANINFO_BLIND_1,
197 PARMAT(17) = (ONE - TWO*POISSON)/(ONE - POISSON)
208 IF (ISRATE == 0) THEN
215 CALL INIT_MAT_KEYWORD(MATPARAM,"HOOK")
217 ! Properties compatibility
218 CALL INIT_MAT_KEYWORD(MATPARAM,"SHELL_ISOTROPIC")
219 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
220 CALL INIT_MAT_KEYWORD(MATPARAM,"SPH")
222 WRITE(IOUT,1100) TRIM(TITR),ID,35
225 IF (IS_ENCRYPTED) THEN
226 WRITE(IOUT,'(5x,a,//)
')'confidential data
'
228 WRITE(IOUT,1200) RHO0,RHOR
229 WRITE(IOUT,1300) E,POISSON,E1,E2,RELVEXP,C1,C2,C3,FCT_ID,FSCAL,
230 . IFLAG,PMIN,ET,POISSONT,MU,LAMBDA,P0,PHI,GAMA0
231 WRITE(IOUT,1500) ISRATE,ASRATE
237 & (5X,24H ELASTIC WITH VISCOSITY,/,
238 & 5X,24H ----------------------,//)
241 & 5X, 'material number . . . . . . . . . . . .=
',I10/,
242 & 5X, 'material law. . . . . . . . . . . . . .=
',I10/)
244 & 5X, 'initial density . . . . . . . . . . . .=
',1PG20.13/)
246 & (5X, 'young
''s modulus. . . . . . . . . . . .=
',1PG20.13/
247 & ,5X, 'poisson
''s ratio. . . . . . . . . . . .=
',1PG20.13/
248 & ,5X, 'e1. . . . . . . . . . . . . . . . . . .=
',1PG20.13/
249 & ,5X, 'e2. . . . . . . . . . . . . . . . . . .=
',1PG20.13/
250 & ,5X, 'exponent on relative volume . . . . . .=
',1PG20.13//
251 & ,5X, 'c1. . . . . . . . . . . . . . . . . . .=
',1PG20.13/
252 & ,5X, 'c2. . . . . . . . . . . . . . . . . . .=
',1PG20.13/
253 & ,5X, 'c3. . . . . . . . . . . . . . . . . . .=
',1PG20.13//
254 & ,5X, 'FUNCTION number
for pressure. . . . . .=
',I10/
255 & ,5X, 'pressure function scale factor. . . . .=
',1PG20.13//
256 & ,5X, 'flag
for open cell foam formulation . .=
',I10/
257 & ,5X, 'cut off pressure in tension . . . . . .=
',1PG20.13//
258 & ,5X, 'et. . . . . . . . . . . . . . . . . . .=
',1PG20.13/
259 & ,5X, 'poisson
''s ratio (TANGENT). . . . . . .=
',1PG20.13/
260 & ,5X, 'viscosity coefficient (IN PURE SHEAR) .=
',1PG20.13/
261 & ,5X, 'viscosity coefficient (VOLUMETRIC). . .=
',1PG20.13//
262 & ,5X, 'initial pressure. . . . . . . . . . . .=
',1PG20.13/
263 & ,5X, 'porosity. . . . . . . . . . . . . . . .=
',1PG20.13/
264 & ,5X, 'initial volumetric strain. . . .. . . .=
',1PG20.13/)
266 & (5X, 'strain rate filtering flag . . . . . .=
',I10/
267 & ,5X, 'strain rate cutting frequency . . . . .=
',1PG20.13)
subroutine hm_read_mat35(uparam, maxuparam, nuparam, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, pm, israte, id, titr, lsubmodel, imatvis, mtag, matparam)