41
42
43
47 USE matparam_def_mod
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "scr03_c.inc"
69#include "units_c.inc"
70#include "param_c.inc"
71
72
73
74 INTEGER, INTENT(INOUT) :: MAT_ID
75 INTEGER, INTENT(INOUT) :: ISRATE
76 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
77 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
78 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
79 TYPE(UNIT_TYPE_) ,INTENT(IN) :: UNITAB
80 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD),INTENT(IN) :: LSUBMODEL
81 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG
82 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MATPARAM
83
84
85
86 LOGICAL :: ,IS_ENCRYPTED,IS_EOS, EOS_EMBEDDED
87 INTEGER JTUR, I, EMPTY_LINE,COUNT,IEOS,LAW6_OPT
89 . young, anu, ca, cb, cn, epsm, sigm, bulk,
90 . pmin, e0, g, fac_l, fac_t, fac_m, fac_c,
91 . bid2 ,bid3 ,bid4 ,bid5 ,
92 . bid2_,bid3_,bid4_,bid5_,
93 . c0,c1,c2,c3,c4,c5,psh,rho0,rhor
94
95
96
97 count = 0
98 is_eos=.false.
99 ieos=0
100 eos_embedded=.false.
101 bulk=zero
102 is_encrypted = .false.
103 is_available = .false.
104
106
107 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
108 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
109
110 CALL hm_get_floatv(
'MAT_E' ,young ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv(
'MAT_NU' ,anu ,is_available, lsubmodel, unitab)
112
113 CALL hm_get_floatv(
'MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv(
'MAT_BETA' ,cb ,is_available, lsubmodel, unitab
115 CALL hm_get_floatv(
'MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
118
119 CALL hm_get_floatv(
'MAT_PC' ,pmin ,is_available, lsubmodel, unitab)
120
121 CALL hm_get_intv (
'Line_count' ,count ,is_available, lsubmodel)
122
123 IF(invers_init>=2018)THEN
124 eos_embedded=.false.
125 ELSEIF(invers_init>=110)THEN
126 IF(count==3)eos_embedded=.true.
127 ELSE
128 eos_embedded=.true.
129 ENDIF
130
131
132
133
134
135 IF(eos_embedded)THEN
136 IF(invers_init>=140) THEN
138 . msgtype=msgerror,
139 . anmode=aninfo,
140 . i1 = mat_id,
141 . c1 = titr)
142 RETURN
143 ENDIF
144 CALL hm_get_floatv(
'MAT_C0' ,c0 ,is_available, lsubmodel, unitab)
145 CALL hm_get_floatv(
'MAT_C1' ,c1 ,is_available, lsubmodel, unitab)
146 CALL hm_get_floatv(
'MAT_C2' ,c2 ,is_available, lsubmodel, unitab)
147 CALL hm_get_floatv(
'MAT_C3' ,c3 ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv(
'MAT_C4' ,c4 ,is_available, lsubmodel, unitab)
149 CALL hm_get_floatv(
'MAT_C5' ,c5 ,is_available, lsubmodel, unitab)
150 CALL hm_get_floatv(
'MAT_E0' ,e0 ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv(
'MAT_PSH' ,psh ,is_available, lsubmodel, unitab)
152 bulk = c1
153 pm(23)= e0
154 pm(31)= c0-psh
155 pm(32)= c1
156 pm(33)= c2
157 pm(34)= c3
158 pm(35)= c4
159 pm(36)= c5
160 pm(88)= psh
161 ieos = 1
162 ELSE
163 ieos = 18
164 ENDIF
165
166 matparam%IEOS = ieos
167 ipm(4) = ieos
168
169 IF (pmin==zero) pmin=-ep20
170 IF (rhor==zero) rhor=rho0
171 pm(1) = rhor
172 pm(89)= rho0
173 IF(cn==zero.OR.cn==one) cn = onep0001
174 IF(epsm==zero) epsm = ep20
175 IF(sigm==zero) sigm = ep20
176 g = young/(two*(one +anu))
177 IF(.NOT.eos_embedded)bulk = young/(three*(one - two*anu))
178 IF(.NOT.eos_embedded)e0 = zero
179
180 pm(20)=young
181 pm(21)=anu
182 pm(22)=g
183 pm(23)=e0
184 pm(32)=bulk
185 pm(37)=pmin
186 pm(38)=ca
187 pm(39)=cb
188 pm(40)=cn
189 pm(41)=epsm
190 pm(42)=sigm
191 pm(79)=three100
192
193 ipm(252)= 2
194 pm(105) = (one -two*anu)/(one - anu)
195
196 mtag%G_PLA = 1
197 mtag%L_PLA = 1
198 mtag%G_TEMP = 1
199 mtag%L_TEMP = 1
200
204
206
207
209
210
213
214 WRITE(iout,2001) titr,mat_id,3
215 WRITE(iout,1000)
216
217 IF(is_encrypted)THEN
218 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
219 ELSE
220 WRITE(iout,2002)rho0,rhor
221 WRITE(iout,1300)young,anu,g,bulk
222 WRITE(iout,1400)ca,cb,cn,epsm,sigm
223 WRITE(iout,1500)pmin
224 ENDIF
225
226
227
228 IF(eos_embedded)THEN
229 WRITE(iout,2000)
230 IF(is_encrypted)THEN
231 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
232 ELSE
233 WRITE(iout,2500)c0,c1,c2,c3,c4,c5,e0,pm(1),psh
234 ENDIF
235 ENDIF
236
237
238 RETURN
239 1000 FORMAT(
240 & 5x,' ELASTIC PLASTIC HYDRODYNAMIC ',/,
241 & 5x,' ---------------------------- ',//)
242 1300 FORMAT(
243 & 5x,'YOUNG',1h','s modulus . . . . . . . . . . . .=',1PG20.13/,
244 & 5X,'poisson',1H','S RATIO . . . . . . . . . . . .=',1pg20.13/,
245 & 5x,'SHEAR MODULUS . . . . . . . . . . . . . .=',1pg20.13/,
246 & 5x,'BULK MODULUS . . . . . . . . . . . . . .=',1pg20.13//)
247 1400 FORMAT(
248 & 5x,'YIELD COEFFICIENT CA. . . . . . . . . .=',1pg20.13/,
249 & 5x,'YIELD COEFFICIENT CB. . . . . . . . . .=',1pg20.13/,
250 & 5x,'YIELD COEFFICIENT CN. . . . . . . . . .=',1pg20.13/,
251 & 5x,'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
252 & 5x,'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13//)
253 1500 FORMAT(
254 & 5x,'PRESSURE CUTOFF . . . . . . . . . . . .=',1pg20.13//)
255 2000 FORMAT(
256 & 5x,' POLYNOMIAL EOS ',/,
257 & 5x,' -------------- ',/,
258 & 5x,' INPUT 100 IS OBSOLETE ',/,
259 & 5x,' IT CAN BE ERASED BY /EOS CARD ',/)
260 2500 FORMAT(
261 & 5x,'C0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
262 & 5x,'c1. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
263 & 5X,'c2. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
264 & 5X,'c3. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
265 & 5X,'c4. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
266 & 5X,'c5. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
267 & 5X,'initial internal energy per unit volume .=',1PG20.13/,
268 & 5X,'reference density . . . . . . . . . . . .=',1PG20.13/,
269 & 5X,'pressure shift. . . . . . . . . . . . . .=',1PG20.13//)
270 2001 FORMAT(/
271 & 5X,A,/,
272 & 5X,' material number . . . . . . . . . . . .=',I10/,
273 & 5X,' material law. . . . . . . . . . . . . .=',I10/)
274 2002 FORMAT(
275 & 5X,' initial density . . . . . . . . . . . .=',1PG20.13/,
276 & 5X,' reference density . . . . . . . . . . .=',1PG20.13/)
277
278 RETURN
subroutine hm_get_floatv(name, rval, 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)
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)