44
45
46
51 USE matparam_def_mod
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67#include "implicit_f.inc"
68
69
70
71#include "units_c.inc"
72#include "param_c.inc"
73
74
75
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(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
86 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
87 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
88
89
90
91 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
92 INTEGER :: FCT_ID,IFLAG,ILAW
93 my_real :: rho0,rhor,e,e1,e2,et,g,gt,poisson,poissont,relvexp,mu,lambda,
94 . c1,c2,c3,pmin,p0,phi,gama0,bulk,fscal,fscal_unit,asrate
95
96 is_encrypted = .false.
97 is_available = .false.
98 imatvis = 1
99 ilaw = 35
100 israte = 0
101
102
104
105 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
107
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)
113
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)
119
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)
124
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)
129
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)
133
134
135
137 IF (fscal == zero) fscal = one*fscal_unit
138
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)
143
144
145
146 IF (asrate /= zero) THEN
147
148 israte = 1
149 ELSE
150
151 IF (israte /= 0) THEN
152 asrate = 10000.0d0*unitab%FAC_T_WORK
153
154 ELSE
155 asrate = zero
156 ENDIF
157 ENDIF
158
159
160 IF (((c1 /= zero).OR.(e1 /= zero)).AND.(israte == 0)) THEN
162 . msgtype=msgwarning,
163 . anmode=aninfo_blind_1,
165 . c1=titr)
166 ENDIF
167
168
169 uparam(1) = e
170 uparam(2) = poisson
171 uparam(3) = e1
172 uparam(4) = e2
173 uparam(5) = et
174 uparam(6) = poissont
175 uparam(7) = mu
176 uparam(8) = lambda
177 uparam(9) = p0
178 uparam(10) = phi
179 uparam(11) = gama0
180 uparam(12) = c1
181 uparam(13) = c2
182 uparam(14) = c3
183 uparam(15) = iflag
184 uparam(16) = pmin
185 uparam(17) = relvexp
186 uparam(18) = fscal
187 uparam(19) = 0
188
189 ifunc(1) = fct_id
190
191 parmat(1) = e
192 parmat(2) = e
193 parmat(3) = poisson
194 parmat(4) = israte
195 parmat(5) = asrate
196 parmat(16) = 2
197 parmat(17) = (one - two*poisson)/(one - poisson)
198
199 mtag%L_EPSD = 1
200 mtag%G_EPSD = 1
201
202 pm(1) = rhor
203 pm(89) = rho0
204 pm(100)= e
205
206 nuparam = 19
207 nfunc = 1
208 IF (israte == 0) THEN
209 nuvar = 3
210 ELSE
211 nuvar = 4
212 ENDIF
213
214
216
217
221
222 WRITE(iout,1100) trim(titr),
id,35
223 WRITE(iout,1000)
224
225 IF (is_encrypted) THEN
226 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
227 ELSE
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
232 ENDIF
233
234 RETURN
235
236 1000 FORMAT
237 & (5x,24h elastic with viscosity,/,
238 & 5x,24h ----------------------,//)
239 1100 FORMAT(/
240 & 5x,a,/,
241 & 5x, 'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
242 & 5x, 'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
243 1200 FORMAT(
244 & 5x, 'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
245 1300 FORMAT
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/)
265 1500 FORMAT
266 & (5X, 'strain rate filtering flag . . . . . .=',I10/
267 & ,5X, 'strain rate cutting frequency . . . . .=',1PG20.13)
268
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine init_mat_keyword(matparam, keyword)
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)