39 INTEGER,
INTENT(IN) :: lM, lN
41 CHARACTER(len=*),
INTENT(IN) :: lName
43 DOUBLE PRECISION,
INTENT(INOUT) :: lMW
63 DOUBLE PRECISION :: xTc
66 DOUBLE PRECISION :: ICpoR_TrL
67 DOUBLE PRECISION :: ICpoR_TcL
68 DOUBLE PRECISION :: ICpoR_TcH
70 LOGICAL :: testCp = .false.
72 CHARACTER(len=256) :: DB
89 OPEN(convert=
'BIG_ENDIAN',unit=funit, file=
'mfix.dat', status
'OLD' 90 IF(ios /= 0) cycle db_lp
91 db=
'';
WRITE(db,1000)
'mfix.dat' 94 ELSEIF(file == 2)
THEN 95 OPEN(convert=
'BIG_ENDIAN',unit=funit,file=trim(
therm), status
'OLD' 96 IF(ios /= 0) cycle db_lp
97 db=
'';
WRITE(db,1000) trim(
therm)
138 icpor_h(lm,ln) = icpor_tch - (icpor_tcl - icpor_trl)
144 WRITE(
err_msg,1001) trim(adjustl(db)),
'Found!' 147 if(testcp)
CALL writecp(lm, ln, lname, lmw)
151 WRITE(
err_msg,1001) trim(adjustl(db)),
'Not found.' 173 1000
FORMAT(
'Checking ',a)
174 1001
FORMAT(8x,a,1x,
' :: ',a)
178 1010
FORMAT(
'Message 1010: Species "',a,
'" was not matched to any ', &
179 'entry in the',/
'thermochemical databases.',2/,
'SUGGESTION: ',&
180 'Search the database for the exact species name. The ',/ &
181 'species names are case sensitive and should match the names',&
182 ' in',/
'BURCAT.THR exactly excluding trailing blanks and ', &
183 'tabs. Also verify',/
'that the data section in the mfix.dat ',&
184 'file (if any) is below a line',/
'that starts with THERMO ', &
185 'DATA.',2/
'Database location:', /a)
245 IF(.NOT.discrete_element .OR. des_continuum_hybrid)
THEN 251 WRITE(*,1011)
'continuum', m, nn
264 1010
FORMAT(/1x,70(
'*')/,
' From: READ_DATABASE0',/,
' Message: ', &
265 'No SPECIES_NAME provided for gas phase species ',i3,
'.',/
' ',&
266 'Check mfix.dat.',/1x,70(
'*')/)
267 1011
FORMAT(/1x,70(
'*')/,
' From: READ_DATABASE0',/,
' Message: ', &
268 'No SPECIES_NAME provided for ',a,
' solids phase ',i2,
', ',/ &
269 ' species ',i3,
'.',/
' Check mfix.dat.',/1x,70(
'*')/)
293 SUBROUTINE writecp(lM, lN, lName, lMW)
306 INTEGER,
INTENT(IN) :: lM, lN
308 CHARACTER(len=*),
INTENT(IN) :: lName
310 DOUBLE PRECISION,
INTENT(in) :: lMW
312 INTEGER :: IER1, IER2, lc
314 DOUBLE PRECISION :: T
315 DOUBLE PRECISION :: lCP, lICP
317 write(*,
"(2/,3x,'Specific Heat report for ',A)")trim(lname)
319 write(*,
"(/12x,'Low',9x,'High')")
320 write(*,
"(6x,'T',3x,g12.5,2x,g12.5)")
tlow(lm,ln),
thigh(lm,ln)
322 write(*,
"(4x,'A(',I1,')',2(2x,g12.5))") lc, &
326 write(*,
"(5x,'Tcom: ',g12.5)")
tcom(lm,ln)
329 write(*,
"(5x,'Temperature',8x,'Cp',11x,'ICp')")
331 t =
tcom(lm,ln) - 100.0
337 write(*,
"(7x,g12.5)",advance=
"NO") t
339 licp =
calc_icpor(t, lm, ln, ier2) * rgas / lmw
340 write(*,
"(2(3x,g12.5))",advance=
"NO")lcp, licp
342 IF(ier1 /= 0)
write(*,
"(3x,'Cp Error!')",advance=
"NO")
343 IF(ier2 /= 0)
write(*,
"(3x,'ICp Error!')",advance=
"NO")
351 DO WHILE(t <=
tcom(lm,ln) + 100.0)
356 write(*,
"(7x,g12.5)",advance=
"NO") t
358 licp =
calc_icpor(t, lm, ln, ier2) * rgas / lmw
359 write(*,
"(2(3x,g12.5))",advance=
"NO")lcp, licp
361 IF(ier1 /= 0)
write(*,
"(3x,'Cp Error!')",advance=
"NO")
362 IF(ier2 /= 0)
write(*,
"(3x,'ICp Error!')",advance=
"NO")
double precision, dimension(0:dim_m, dim_n) icpor_l
double precision, dimension(0:dim_m, dim_n) thigh
double precision function calc_icpor(T, M, N, IER)
double precision, dimension(0:dim_m, dim_n) tcom
subroutine writecp(lM, lN, lName, lMW)
double precision, parameter undefined
double precision, dimension(dim_n_g) mw_g
subroutine read_therm(funit, Sp, Thigh, Tlow, Tcom, MW, Ahigh, Alow, Hf298oR, IER)
double precision, dimension(0:dim_m, dim_n) hfrefor
subroutine init_err_msg(CALLER)
double precision, dimension(7, 0:dim_m, dim_n) alow
subroutine mfix_exit(myID, normal_termination)
double precision, parameter small_number
pure double precision function calc_cpor(T, M, N)
subroutine read_database0()
integer, parameter unit_log
integer, dimension(0:dim_m) nmax
double precision, dimension(7, 0:dim_m, dim_n) ahigh
double precision, dimension(dim_m, dim_n_s) mw_s
character(len=line_length), dimension(line_count) err_msg
subroutine read_database(lM, lN, lName, lMW)
character(len=18), dimension(dim_n_all) species_name
double precision, parameter t_ref
double precision, dimension(0:dim_m, dim_n) tlow
integer, parameter unit_dat
double precision, parameter gas_const_cal
double precision, dimension(0:dim_m, dim_n) icpor_h
double precision, parameter zero
subroutine flush_err_msg(DEBUG, HEADER, FOOTER, ABORT, LOG, CALL_TREE)
pure double precision function calc_icpor0(T, A, REF_ICpoR)
character, parameter undefined_c