40 SUBROUTINE hm_read_eos_sesame(IOUT,PM,UNITAB,IUNIT,LSUBMODEL,IMIDEOS,IMID,TITR,BUFMAT,MFI,IDF,MAT_PARAM)
49 USE matparam_def_mod,
ONLY : matparam_struct_
65#include "implicit_f.inc"
70 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
72 INTEGER,
INTENT(INOUT) :: MFI, IDF
73 INTEGER,
INTENT(IN) :: IMID
75 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
76 TYPE(matparam_struct_),
INTENT(INOUT) :: MAT_PARAM
77 INTEGER,
INTENT(IN) :: IMIDEOS
81 INTEGER NR, NT, IDR, IDT, IDP, IDE
82 my_real e0, rho0, rho0i, p0, t0, xnr, xnt, dpdr, rho
85 CHARACTER FILE*(ncharline),FILE_TMP*(ncharline)
87 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
88 CHARACTER(LEN=NCHARTITLE) :: TITR
92 is_encrypted = .false.
93 is_available = .false.
94 is_available_rho0 = .false.
98 CALL hm_get_floatv(
'MAT_EA', e0, is_available,lsubmodel,unitab)
99 CALL hm_get_floatv(
'SESAME_RHO', rho0, is_available_rho0,lsubmodel,unitab)
117 file_len = len_trim(file)
118 file_tmp(1:file_len) = file(1:file_len)
121 OPEN(unit=31,file=file(1:file_len),err=999,status=
'OLD',form=
'FORMATTED')
123 READ(31,
'(2E15.0)')xnr,xnt
128 mat_param%EOS%NUPARAM = 0
129 mat_param%EOS%NIPARAM = 3
130 mat_param%EOS%NFUNC = 0
131 mat_param%EOS%NTABLE = 0
132 CALL mat_param%EOS%CONSTRUCT()
134 IF (mat_param%THERM%TINI == zero)
THEN
135 mat_param%THERM%TINI =three100
139 IF(pm(79) == zero)pm(79)=three100
145 mfi = mfi + idf - idr
147 mat_param%EOS%IPARAM(1) = nr
148 mat_param%EOS%IPARAM(2) = nt
149 mat_param%EOS%IPARAM(3) = idr
151 bufmat(idr:idf-1) = zero
153 CALL mrdse2(bufmat(idr),nr,bufmat(idt),nt,bufmat(idp),bufmat(ide))
156 CALL tb2si1(bufmat(idr),bufmat(idp),bufmat(ide),nr,nt)
157 CALL tbusr1(bufmat(idr),bufmat(idp),bufmat(ide),nr,nt,unitab)
161 CALL mintp_re(bufmat(idr),nr,bufmat(idt),nt,bufmat(ide),rho,t0,e0/rho0,dydz)
162 CALL mintp_rt(bufmat(idr),nr,bufmat(idt),nt,bufmat(idp),rho,t0,p0,dpdr)
166 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
168 WRITE(iout,1500)e0,file,p0,t0
169 IF(is_available_rho0)
WRITE(iout,1501)pm(1)
196 dpdmu=
max(zero,dpdmu)
197 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
202 CALL ancmsg(msgid=19,msgtype=msgerror,anmode=aninfo,i1=imid,c1=
'EOS',c2=
'EOS',c3=titr,c4=file)
206 & 5x,
' SESAME TABLE EOS ',/,
207 & 5x,
' ---------------- ',/)
209 & 5x,
'INITIAL INTERNAL ENERGY PER UNIT VOLUME. =',1pg20.13/,
210 & 5x,
'SESAME TABLE 301 . . . . . . . . . . . . =',a70/,
211 & 5x,
'INITIAL PRESSURE . . . . . . . . . . . . =',1pg20.13/,
212 & 5x,
'INITIAL TEMPERATURE. . . . . . . . . . . =',1pg20.13)
214 & 5x,
'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
subroutine hm_read_eos_sesame(iout, pm, unitab, iunit, lsubmodel, imideos, imid, titr, bufmat, mfi, idf, mat_param)
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)