-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
e5941e6
commit dc62f7b
Showing
1 changed file
with
301 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,301 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" | ||
"JATS-publishing1.dtd"> | ||
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="1.2" article-type="other"> | ||
<front> | ||
<journal-meta> | ||
<journal-id></journal-id> | ||
<journal-title-group> | ||
<journal-title>Journal of Open Source Software</journal-title> | ||
<abbrev-journal-title>JOSS</abbrev-journal-title> | ||
</journal-title-group> | ||
<issn publication-format="electronic">2475-9066</issn> | ||
<publisher> | ||
<publisher-name>Open Journals</publisher-name> | ||
</publisher> | ||
</journal-meta> | ||
<article-meta> | ||
<article-id pub-id-type="publisher-id">6855</article-id> | ||
<article-id pub-id-type="doi">10.21105/joss.06855</article-id> | ||
<title-group> | ||
<article-title>rgfrosh: A Python package for calculating shock | ||
conditions using real gas equations of state</article-title> | ||
</title-group> | ||
<contrib-group> | ||
<contrib contrib-type="author"> | ||
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-8774-3090</contrib-id> | ||
<name> | ||
<surname>Kinney</surname> | ||
<given-names>Cory</given-names> | ||
</name> | ||
<xref ref-type="aff" rid="aff-1"/> | ||
</contrib> | ||
<contrib contrib-type="author"> | ||
<name> | ||
<surname>Vasu</surname> | ||
<given-names>Subith</given-names> | ||
</name> | ||
<xref ref-type="aff" rid="aff-1"/> | ||
</contrib> | ||
<aff id="aff-1"> | ||
<institution-wrap> | ||
<institution>Department of Mechanical and Aerospace Engineering, | ||
University of Central Florida, Orlando, FL USA</institution> | ||
</institution-wrap> | ||
</aff> | ||
</contrib-group> | ||
<pub-date date-type="pub" publication-format="electronic" iso-8601-date="2024-04-29"> | ||
<day>29</day> | ||
<month>4</month> | ||
<year>2024</year> | ||
</pub-date> | ||
<volume>9</volume> | ||
<issue>99</issue> | ||
<fpage>6855</fpage> | ||
<permissions> | ||
<copyright-statement>Authors of papers retain copyright and release the | ||
work under a Creative Commons Attribution 4.0 International License (CC | ||
BY 4.0)</copyright-statement> | ||
<copyright-year>2022</copyright-year> | ||
<copyright-holder>The article authors</copyright-holder> | ||
<license license-type="open-access" xlink:href="https://creativecommons.org/licenses/by/4.0/"> | ||
<license-p>Authors of papers retain copyright and release the work under | ||
a Creative Commons Attribution 4.0 International License (CC BY | ||
4.0)</license-p> | ||
</license> | ||
</permissions> | ||
<kwd-group kwd-group-type="author"> | ||
<kwd>Python</kwd> | ||
<kwd>shock tube</kwd> | ||
<kwd>normal shock</kwd> | ||
<kwd>frozen shock</kwd> | ||
<kwd>ideal gas</kwd> | ||
<kwd>real gas</kwd> | ||
</kwd-group> | ||
</article-meta> | ||
</front> | ||
<body> | ||
<sec id="summary"> | ||
<title>Summary</title> | ||
<p><monospace>rgfrosh</monospace> solves the reflected shock equations | ||
for an arbitrary equation of state, allowing for accurate calculation | ||
of the temperature and pressure behind a reflected shock accounting | ||
for real gas effects. Forward and inverse solvers are provided to | ||
calculate experimental conditions based on measurements and to plan | ||
experiments based on desired conditions, respectively. | ||
<monospace>rgfrosh</monospace> is designed to be lightweight and | ||
extensible, with a simple interface for users to utilize existing | ||
thermodynamic libraries.</p> | ||
</sec> | ||
<sec id="statement-of-need"> | ||
<title>Statement of need</title> | ||
<p>Combustion is a complex process that is influenced by numerous | ||
factors, including temperature, pressure, and chemical composition. | ||
Combustion modeling relies on chemical kinetics mechanisms that detail | ||
how chemical reaction rates – involving many intermediate species – | ||
vary with temperature and pressure. Experimental data is essential for | ||
measuring reaction rates, refining mechanisms, and validating | ||
predictions from these models for certain fuels and conditions.</p> | ||
<p>Shock tubes are ideal experimental facilities for performing | ||
fundamental research in combustion because they use shock waves to | ||
impart step changes in temperature and pressure to a test gas mixture. | ||
The gas behind the reflected shock is relatively stagnant, and the | ||
system is considered adiabatic on the relevant time-scales; therefore, | ||
the shock tube closely resembles a constant volume zero-dimensional | ||
reactor, allowing for comparison between experimental measurements and | ||
model predictions. Accurate calculation of the reflected shock | ||
conditions is essential for correctly interpreting experimental | ||
results. This is accomplished by solving the reflected shock equations | ||
under an assumed equation of state using the known initial state of | ||
the gas and the measured shock velocity.</p> | ||
<p>Fundamental research into combustion at extremely high-pressure | ||
conditions, such as for rocket engines or direct-fire supercritical | ||
CO<sub>2</sub> power cycles | ||
(<xref alt="Kinney, 2022" rid="ref-kinneyU003A2022" ref-type="bibr">Kinney, | ||
2022</xref>), requires consideration of real gas effects in | ||
experimental measurements and model simulations.</p> | ||
<sec id="state-of-the-field"> | ||
<title>State of the field</title> | ||
<p>A shock solver supporting real gas equations of state called | ||
RGFROSH was previously developed in FORTRAN by Davidson & Hanson | ||
(<xref alt="1996" rid="ref-davidsonU003A1996" ref-type="bibr">1996</xref>); | ||
however, there existed a need for a modernized open-source version, | ||
as the original is not generally available nor would it be readily | ||
compatible with modern tools. The extensive SDToolbox | ||
(<xref alt="Browne et al., 2021" rid="ref-sdtoolbox" ref-type="bibr">Browne | ||
et al., 2021</xref>) has functionality for computing the postshock | ||
state for a chemically frozen shock; however, SDToolbox only | ||
supports Cantera | ||
(<xref alt="Goodwin et al., 2023" rid="ref-cantera" ref-type="bibr">Goodwin | ||
et al., 2023</xref>) for thermodynamic properties and does not | ||
provide a convenient interface to obtain the full solution for a | ||
reflected shock for both the forward and inverse problems. Thus, the | ||
present <monospace>rgfrosh</monospace> was developed in Python as a | ||
solution that can utilize any modern thermodynamic library to solve | ||
for the full reflected shock solution for an arbitrary equation of | ||
state to enable further research into high-pressure combustion.</p> | ||
</sec> | ||
</sec> | ||
<sec id="features"> | ||
<title>Features</title> | ||
<p><monospace>rgfrosh</monospace> provides a simple interface for | ||
solving the reflected shock equations, allowing the user to obtain the | ||
full solution with a single function call. Two models are provided - | ||
<monospace>IdealShock</monospace> for calorically perfect gases, and | ||
<monospace>FrozenShock</monospace> for arbitrary equations of state. | ||
The former is primarily included for comparison and validation | ||
purposes, while the latter is the primary focus of the package as it | ||
allows for accurate calculation of the reflected shock conditions for | ||
real gases.</p> | ||
<p>To remain as lightweight and extensible as possible, | ||
<monospace>rgfrosh</monospace> relies on external packages for the key | ||
thermodynamic functions required by the | ||
<monospace>FrozenShock</monospace> solver. The required interface is | ||
defined by the <monospace>ThermoInterface</monospace> protocol class, | ||
which was written to provide native support for Cantera | ||
(<xref alt="Goodwin et al., 2023" rid="ref-cantera" ref-type="bibr">Goodwin | ||
et al., 2023</xref>). Additionally, an interface is provided to wrap | ||
CoolProp | ||
(<xref alt="Bell et al., 2014" rid="ref-coolprop" ref-type="bibr">Bell | ||
et al., 2014</xref>), which itself has backend support for NIST | ||
REFPROP | ||
(<xref alt="Lemmon et al., 2002" rid="ref-refprop" ref-type="bibr">Lemmon | ||
et al., 2002</xref>), for use with the solver. These two compatible | ||
packages enable support for a wide range of equations of state which | ||
should cover the majority of use cases; however, any user-defined | ||
class that implements the simple | ||
<monospace>ThermoInterface</monospace> protocol can be used with the | ||
solver.</p> | ||
<p>The primary use cases for <monospace>rgfrosh</monospace> are | ||
experiment postprocessing and experiment planning. The | ||
<monospace>solve_incident</monospace> and | ||
<monospace>solve_reflected</monospace> methods implement the | ||
Newton-Raphson solver detailed by Davidson & Hanson | ||
(<xref alt="1996" rid="ref-davidsonU003A1996" ref-type="bibr">1996</xref>) | ||
for calculating the incident and reflected shock conditions, | ||
respectively, from the initial conditions and the experimentally | ||
measured shock velocity. The <monospace>solve_initial</monospace> | ||
method implements the algorithm derived by the author (see | ||
<xref alt="Kinney, 2022, A.3" rid="ref-kinneyU003A2022" ref-type="bibr">Kinney, | ||
2022, A.3</xref>) for calculating the initial pressure and incident | ||
shock velocity, temperature, and pressure from the initial temperature | ||
and target reflected shock temperature and pressure for an | ||
experiment.</p> | ||
</sec> | ||
<sec id="future-work"> | ||
<title>Future work</title> | ||
<p>Future work includes the consideration of vibrational | ||
non-equilibrium in the shock solvers. Current solver functionality | ||
would be classified as equilibrium-equilibrium (EE) mode, referring to | ||
the incident and reflected shock, respectively; frozen-equilibrium and | ||
frozen-frozen modes are planned.</p> | ||
</sec> | ||
<sec id="acknowledgements"> | ||
<title>Acknowledgements</title> | ||
<p>We would like to acknowledge D. F. Davidson and R. K. Hanson for | ||
authoring the original software this work is based on, granting | ||
permission to use the package name, and for providing validation data | ||
for comparison. Additionally, the authors appreciate funding from the | ||
University of Central Florida.</p> | ||
</sec> | ||
</body> | ||
<back> | ||
<ref-list> | ||
<title></title> | ||
<ref id="ref-kinneyU003A2022"> | ||
<element-citation publication-type="article-journal"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Kinney</surname><given-names>Cory</given-names></name> | ||
</person-group> | ||
<article-title>Extreme-pressure ignition studies of methane and natural gas with CO2 with applications in rockets and gas turbines</article-title> | ||
<year iso-8601-date="2022">2022</year> | ||
<uri>https://stars.library.ucf.edu/etd2020/1033</uri> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-davidsonU003A1996"> | ||
<element-citation publication-type="article-journal"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Davidson</surname><given-names>David F</given-names></name> | ||
<name><surname>Hanson</surname><given-names>Ronald K</given-names></name> | ||
</person-group> | ||
<article-title>Real gas corrections in shock tube studies at high pressures</article-title> | ||
<source>Israel journal of chemistry</source> | ||
<publisher-name>Wiley Online Library</publisher-name> | ||
<year iso-8601-date="1996">1996</year> | ||
<volume>36</volume> | ||
<issue>3</issue> | ||
<pub-id pub-id-type="doi">10.1002/ijch.199600044</pub-id> | ||
<fpage>321</fpage> | ||
<lpage>326</lpage> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-sdtoolbox"> | ||
<element-citation> | ||
<person-group person-group-type="author"> | ||
<name><surname>Browne</surname><given-names>S.</given-names></name> | ||
<name><surname>Ziegler</surname><given-names>J.</given-names></name> | ||
<name><surname>Bitter</surname><given-names>N.</given-names></name> | ||
<name><surname>Schmidt</surname><given-names>B.</given-names></name> | ||
<name><surname>Lawson</surname><given-names>J.</given-names></name> | ||
<name><surname>Shepherd</surname><given-names>J. E.</given-names></name> | ||
</person-group> | ||
<article-title>SDToolbox - numerical tools for shock and detonation wave modeling</article-title> | ||
<publisher-name>California Institute of Technology, Pasadena, CA</publisher-name> | ||
<year iso-8601-date="2021">2021</year> | ||
<uri>https://shepherd.caltech.edu/EDL/PublicResources/sdt/</uri> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-cantera"> | ||
<element-citation> | ||
<person-group person-group-type="author"> | ||
<name><surname>Goodwin</surname><given-names>David G.</given-names></name> | ||
<name><surname>Moffat</surname><given-names>Harry K.</given-names></name> | ||
<name><surname>Schoegl</surname><given-names>Ingmar</given-names></name> | ||
<name><surname>Speth</surname><given-names>Raymond L.</given-names></name> | ||
<name><surname>Weber</surname><given-names>Bryan W.</given-names></name> | ||
</person-group> | ||
<article-title>Cantera: An object-oriented software toolkit for chemical kinetics, thermodynamics, and transport processes</article-title> | ||
<publisher-name>https://www.cantera.org</publisher-name> | ||
<year iso-8601-date="2023">2023</year> | ||
<uri>https://doi.org/10.1002/ijch.199600044</uri> | ||
<pub-id pub-id-type="doi">10.5281/zenodo.8137090</pub-id> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-coolprop"> | ||
<element-citation publication-type="article-journal"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Bell</surname><given-names>Ian H.</given-names></name> | ||
<name><surname>Wronski</surname><given-names>Jorrit</given-names></name> | ||
<name><surname>Quoilin</surname><given-names>Sylvain</given-names></name> | ||
<name><surname>Lemort</surname><given-names>Vincent</given-names></name> | ||
</person-group> | ||
<article-title>Pure and pseudo-pure fluid thermophysical property evaluation and the open-source thermophysical property library CoolProp</article-title> | ||
<source>Industrial & Engineering Chemistry Research</source> | ||
<year iso-8601-date="2014">2014</year> | ||
<volume>53</volume> | ||
<issue>6</issue> | ||
<uri>http://pubs.acs.org/doi/abs/10.1021/ie4033999</uri> | ||
<pub-id pub-id-type="doi">10.1021/ie4033999</pub-id> | ||
<fpage>2498</fpage> | ||
<lpage>2508</lpage> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-refprop"> | ||
<element-citation publication-type="article-journal"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Lemmon</surname><given-names>Eric W</given-names></name> | ||
<name><surname>Huber</surname><given-names>Marcia L</given-names></name> | ||
<name><surname>McLinden</surname><given-names>Mark O</given-names></name> | ||
</person-group> | ||
<article-title>NIST reference fluid thermodynamic and transport properties–REFPROP</article-title> | ||
<source>NIST standard reference database</source> | ||
<year iso-8601-date="2002">2002</year> | ||
<volume>23</volume> | ||
<issue>2002</issue> | ||
<fpage>v7</fpage> | ||
<lpage></lpage> | ||
</element-citation> | ||
</ref> | ||
</ref-list> | ||
</back> | ||
</article> |