68
69
70
71 USE matparam_def_mod
78 USE hm_read_eos_compaction_mod , ONLY : hm_read_eos_compaction
79 USE hm_read_eos_compaction2_mod , ONLY : hm_read_eos_compaction2
80 USE hm_read_eos_compaction_tab_mod , ONLY : hm_read_eos_compaction_tab
82
83
84
85#include "implicit_f.inc"
86
87
88
89#include "units_c.inc"
90#include "param_c.inc"
91
92
93
94 INTEGER,INTENT(IN) :: NUMMAT, NTABLE, NFUNCT
95 TYPE(MLAW_TAG_) , DIMENSION(NUMMAT),INTENT(INOUT) :: MLAW_TAG
96 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
97 INTEGER :: BUFLEN,IADBUF
98 INTEGER,INTENT(IN) :: SBUFMAT
99 INTEGER ,DIMENSION(NPROPMI,NUMMAT) ,INTENT(INOUT) :: IPM
100 INTEGER,INTENT(IN) :: SNPC, NPTS
101 INTEGER,INTENT(IN) :: NPC(SNPC)
103 my_real ,
DIMENSION(NPROPM ,NUMMAT) ,
INTENT(INOUT) :: pm
104 my_real ,
DIMENSION(SBUFMAT),
INTENT(INOUT) :: bufmat
105 TYPE(MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
106 TYPE(EOS_TAG_),DIMENSION(0:MAXEOS) ,INTENT(INOUT) :: EOS_TAG
107 TYPE(SUBMODEL_DATA) ,DIMENSION(NSUBMOD) ,INTENT(IN) :: LSUBMODEL
108 TYPE(TTABLE) ,DIMENSION(NTABLE) ,INTENT(IN) :: TABLE
109
110
111
112 INTEGER :: I,IMAT,IEOS,HM_NEOS,IUNIT,FLAGUNIT,FLAGMAT,IMID,EOS_uid,MTN,UNIT_ID
113 CHARACTER(LEN=NCHARTITLE) :: TITR
114 CHARACTER KEY2*32, EOS_key*32
115 LOGICAL IS_AVAILABLE
116 INTEGER ISFLUID
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
150
151
152
153
154
156
157
158 DO i = 1,hm_neos
159 CALL hm_option_read_key(lsubmodel, option_id=eos_uid, option_titr=titr, unit_id=unit_id)
161 eos_key = key2(1:len_trim(key2))
162
163 flagmat = 0
164 DO imat=1,nummat-1
165 imid = ipm(1,imat)
166 IF (imid == eos_uid) THEN
167 flagmat = 1
168 EXIT
169 ENDIF
170 ENDDO
171 IF (eos_uid > 0 .AND. flagmat == 0) THEN
172 CALL ancmsg(msgid=1663, anmode=aninfo, msgtype=msgerror, i1=eos_uid, c1=
'EOS', c2=eos_key, c3=titr)
173 ENDIF
174
175
176 flagunit = 0
177 DO iunit=1,unitab%NUNITS
178 IF (unitab%UNIT_ID(iunit) == unit_id) THEN
179 flagunit = 1
180 EXIT
181 ENDIF
182 ENDDO
183 IF (unit_id > 0 .AND. flagunit == 0) THEN
184 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,i1=eos_uid,i2=unit_id,c1=
'MATERIAL',c2=
'EOS MODEL',c3=titr)
185 ENDIF
186
187
188 mat_param(imat)%EOS%TITLE = ''
189 mat_param(imat)%EOS%TITLE(1:len_trim(titr)) = titr(1:len_trim(titr))
190 mat_param(imat)%EOS%NUPARAM = 0
191 mat_param(imat)%EOS%NIPARAM = 0
192 mat_param(imat)%EOS%NFUNC = 0
193 mat_param(imat)%EOS%NTABLE = 0
194 mat_param(imat)%EOS%ISFLUID = 0
195 isfluid = 0
196
197 WRITE(iout,1000) trim(titr),eos_uid
198
199 SELECT CASE (eos_key)
200
201 CASE ('POLYNOMIAL')
202 ieos = 1
204
205 CASE ('GRUNEISEN')
206 ieos = 2
208
209 CASE ('TILLOTSON')
210 ieos = 3
212
213 CASE ('PUFF')
214 ieos = 4
216
217 CASE ('SESAME')
218 ieos = 5
219 CALL hm_read_eos_sesame(iout,pm(1,imat),unitab,iunit,lsubmodel,eos_uid,imid,titr,bufmat,buflen,iadbuf)
220
221 CASE ('NOBLE-ABEL','NA')
222 ieos = 6
224 isfluid = 1
225
226 CASE ('IDEAL-GAS','IDEAL-GAS-VE')
227 ieos = 7
229 isfluid = 1
230
231 CASE ('MURNAGHAN')
232 ieos = 8
234
235 CASE ('OSBORNE')
236 ieos = 9
238
239 CASE ('STIFF-GAS','SG')
240 ieos = 10
242 isfluid = 1
243
244 CASE ('LSZK')
245 ieos = 11
247 isfluid = 1
248
249 CASE ('POWDER-BURN')
250 ieos = 12
251 CALL hm_read_eos_powderburn(iout,pm(1,imat),ipm(1,imat),unitab,lsubmodel,eos_uid, mat_param(imat),
252 . npropm, npropmi, mlaw_tag(imat), eos_tag, ieos )
253
254 CASE ('COMPACTION')
255 ieos = 13
256 CALL hm_read_eos_compaction(iout,pm(1,imat),unitab,lsubmodel,eos_uid,eos_tag,ieos
257 . mat_param(imat)%EOS )
258
259 CASE ('NASG')
260 ieos = 14
262 isfluid = 1
263
264 CASE ('IDEAL-GAS-VT')
265 ieos = 16
267 isfluid = 1
268
269 CASE ('TABULATED')
270 ieos = 17
272
273 CASE ('LINEAR')
274 ieos = 18
276
277 CASE ('EXPONENTIAL')
278 ieos = 19
279 CALL hm_read_eos_exponential(iout,pm(1,imat),unitab,lsubmodel,npropm)
280
281 CASE ('COMPACTION2')
282 ieos = 20
283 CALL hm_read_eos_compaction2(iout,pm(1,imat),unitab,lsubmodel,eos_uid,eos_tag,ieos,npropm,
maxeos,
284 . mat_param(imat)%EOS, iunit, nfunct, npc, tf ,snpc , npts)
285 CASE ('COMPACTION_TAB')
286 ieos = 21
287 CALL hm_read_eos_compaction_tab(iout,pm(1,imat),unitab,lsubmodel,eos_uid,eos_tag,ieos,npropm,
maxeos,
288 . mat_param(imat)%EOS, ntable, table, mat_param(imat)%REZON)
289
290 CASE DEFAULT
291 ieos = -1
292 CALL ancmsg(msgid=67,anmode=aninfo,msgtype=msgerror,i1= eos_uid,c1=key2,c2=
'EOS KEYWORD IS NOT VALID')
293
294 END SELECT
295
296 ipm(4,imat) = ieos
297 mat_param(imat)%IEOS = ieos
298 mat_param(imat)%EOS%ISFLUID = isfluid
299
300 ENDDO
301
302 DO i=1,nummat-1
303 mtn = ipm(2,i)
304 IF (mtn /= 42) pm(100,i) = pm(32,i)
305 ENDDO
306
307 RETURN
308
309 1000 FORMAT(//
310 & 5x,'EQUATION OF STATE ',/,
311 & 5x,a,/,
312 & 5x,'MATERIAL ID . . . . . . . . . . . .=',i10/)
313
subroutine hm_get_string(name, sval, size, is_available)
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_option_start(entity_type)
subroutine hm_read_eos_gruneisen(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_ideal_gas(iout, pm, unitab, iunit, lsubmodel, imideos, mat_param)
subroutine hm_read_eos_ideal_gas_vt(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_linear(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_lszk(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_murnaghan(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_nasg(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_noble_abel(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_osborne(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_polynomial(iout, pm, unitab, iunit, lsubmodel, imideos, isfluid)
subroutine hm_read_eos_puff(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_sesame(iout, pm, unitab, iunit, lsubmodel, imideos, imid, titr, bufmat, mfi, idf)
subroutine hm_read_eos_stiffened_gas(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_tabulated(iout, pm, unitab, iunit, lsubmodel, imideos)
subroutine hm_read_eos_tillotson(iout, pm, unitab, iunit, lsubmodel, imideos, eos_tag, ieos)
integer, parameter nchartitle
integer, parameter ncharkey
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)