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_AVAILABLE,IS_ENCRYPTED,IS_EOS, EOS_EMBEDDED
87 INTEGER COUNT, IEOS
89 . young, anu, ca, cb, cn, epsm, sigm, bulk,
90 . pmin, e0, g,
91 .
92 .
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)
117 CALL hm_get_floatv(
'MAT_SIG' ,sigm ,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
153 matparam%IEOS = 1
154 matparam%EOS%NUPARAM = 7
155 matparam%EOS%NIPARAM = 0
156 matparam%EOS%NFUNC = 0
157 matparam%EOS%NTABLE = 0
158 CALL matparam%EOS%CONSTRUCT()
159 matparam%EOS%UPARAM(1) = c0-psh
160 matparam%EOS%UPARAM(2) = c1
161 matparam%EOS%UPARAM(3) = c2
162 matparam%EOS%UPARAM(4) = c3
163 matparam%EOS%UPARAM(5) = c4
164 matparam%EOS%UPARAM(6) = c5
165 matparam%EOS%UPARAM(7) = zero
166 matparam%EOS%PSH = psh
167 matparam%EOS%E0 = e0
168 bulk = c1
169 pm(23)= e0
170 pm(31)= c0-psh
171 pm(32) = c1
172
173 pm(88)= psh
174 ieos = 1
175 ELSE
176 ieos = 18
177 ENDIF
178
179 matparam%IEOS = ieos
180 ipm(4) = ieos
181
182 IF (pmin==zero) pmin=-ep20
183 IF (rhor==zero) rhor=rho0
184 pm(1) = rhor
185 pm(89)= rho0
186 IF(cn==zero.OR.cn==one) cn = onep0001
187 IF(epsm==zero) epsm = ep20
188 IF(sigm==zero) sigm = ep20
189 g = young/(two*(one +anu))
190 IF(.NOT.eos_embedded)bulk = young/(three*(one - two*anu))
191 IF(.NOT.eos_embedded)e0 = zero
192
193 pm(20)=young
194 pm(21)=anu
195 pm(22)=g
196 pm(23)=e0
197 pm(32)=bulk
198 pm(37)=pmin
199 pm(38)=ca
200 pm(39)=cb
201 pm(40)=cn
202 pm(41)=epsm
203 pm(42)=sigm
204 pm(79)=three100
205
206 ipm(252)= 2
207 pm(105) = (one -two*anu)/(one - anu)
208
209 mtag%G_PLA = 1
210 mtag%L_PLA = 1
211 mtag%G_TEMP = 1
212 mtag%L_TEMP = 1
213
217
219
220
222
223 ! properties compatibility
226
227 WRITE(iout,2001) titr,mat_id,3
228 WRITE(iout,1000)
229
230 IF(is_encrypted)THEN
231 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
232 ELSE
233 WRITE(iout,2002)rho0,rhor
234 WRITE(iout,1300)young,anu,g,bulk
235 WRITE(iout,1400)ca,cb,cn,epsm,sigm
236 WRITE(iout,1500)pmin
237 ENDIF
238
239
240
241 IF(eos_embedded)THEN
242 WRITE(iout,2000)
243 IF(is_encrypted)THEN
244 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
245 ELSE
246 WRITE(iout,2500)c0,c1,c2,c3,c4,c5,e0,pm(1),psh
247 ENDIF
248 ENDIF
249
250
251 RETURN
252 1000 FORMAT(
253 & 5x,' ELASTIC PLASTIC HYDRODYNAMIC ',/,
254 & 5x,' ---------------------------- ',//)
255 1300 FORMAT(
256 & 5x,'YOUNG',1h','s modulus . . . . . . . . . . . .=',1PG20.13/,
257 & 5X,'poisson',1H','S RATIO . . . . . . . . . . . .=',1pg20.13/,
258 & 5x,'SHEAR MODULUS . . . . . . . . . . . . . .=',1pg20.13/,
259 & 5x,'BULK MODULUS . . . . . . . . . . . . . .=',1pg20.13//)
260 1400 FORMAT(
261 & 5x,'YIELD COEFFICIENT CA. . . . . . . . . .=',1pg20.13/,
262 & 5x,'YIELD COEFFICIENT CB. . . . . . . . . .=',1pg20.13/,
263 & 5x,'YIELD COEFFICIENT CN. . . . . . . . . .=',1pg20.13/,
264 & 5x,'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
265 & 5x,'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13//)
266 1500 FORMAT(
267 & 5x,'PRESSURE CUTOFF . . . . . . . . . . . .=',1pg20.13//)
268 2000 FORMAT(
269 & 5x,' POLYNOMIAL EOS ',/,
270 & 5x,' -------------- ',/,
271 & 5x,' INPUT 100 IS OBSOLETE ',/,
272 & 5x,' IT CAN BE ERASED BY /EOS CARD ',/)
273 2500 FORMAT(
274 & 5x,'c0. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
275 & 5X,'c1. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
276 & 5X,'c2. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
277 & 5X,'c3. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
278 & 5X,'c4. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
279 & 5X,'c5. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
280 & 5X,'initial internal energy per unit volume .=',1PG20.13/,
281 & 5X,'reference density . . . . . . . . . . . .=',1PG20.13/,
282 & 5X,'pressure shift. . . . . . . . . . . . . .=',1PG20.13//)
283 2001 FORMAT(/
284 & 5X,A,/,
285 & 5X,' material number . . . . . . . . . . . .=',I10/,
286 & 5X,' material law. . . . . . . . . . . . . .=',I10/)
287 2002 FORMAT(
288 & 5X,' initial density . . . . . . . . . . . .=',1PG20.13/,
289 & 5X,' reference density . . . . . . . . . . .=',1PG20.13/)
290
291 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)