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