-
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
215bd13
commit eb2b1b7
Showing
1 changed file
with
355 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,355 @@ | ||
<?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">6383</article-id> | ||
<article-id pub-id-type="doi">10.21105/joss.06383</article-id> | ||
<title-group> | ||
<article-title><monospace>lbh15</monospace>: a Python package for | ||
standard use and implementation of physical data of heavy liquid metals | ||
used in nuclear reactors</article-title> | ||
</title-group> | ||
<contrib-group> | ||
<contrib contrib-type="author" corresp="yes"> | ||
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0003-0937-8897</contrib-id> | ||
<name> | ||
<surname>Ottino</surname> | ||
<given-names>Gabriele</given-names> | ||
</name> | ||
<xref ref-type="aff" rid="aff-1"/> | ||
<xref ref-type="corresp" rid="cor-1"><sup>*</sup></xref> | ||
</contrib> | ||
<contrib contrib-type="author"> | ||
<name> | ||
<surname>Panico</surname> | ||
<given-names>Daniele</given-names> | ||
</name> | ||
<xref ref-type="aff" rid="aff-1"/> | ||
</contrib> | ||
<contrib contrib-type="author"> | ||
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-7314-2227</contrib-id> | ||
<name> | ||
<surname>Tomatis</surname> | ||
<given-names>Daniele</given-names> | ||
</name> | ||
<xref ref-type="aff" rid="aff-1"/> | ||
</contrib> | ||
<contrib contrib-type="author"> | ||
<name> | ||
<surname>Pantel</surname> | ||
<given-names>Pierre-Alexandre</given-names> | ||
</name> | ||
<xref ref-type="aff" rid="aff-2"/> | ||
</contrib> | ||
<aff id="aff-1"> | ||
<institution-wrap> | ||
<institution>newcleo Srl, via Giuseppe Galliano 27, 10129 Torino, | ||
Italy</institution> | ||
</institution-wrap> | ||
</aff> | ||
<aff id="aff-2"> | ||
<institution-wrap> | ||
<institution>newcleo SA, 9 Rue des Cuirassiers, 69003 Lyon, | ||
France</institution> | ||
</institution-wrap> | ||
</aff> | ||
</contrib-group> | ||
<author-notes> | ||
<corresp id="cor-1">* E-mail: <email></email></corresp> | ||
</author-notes> | ||
<pub-date date-type="pub" publication-format="electronic" iso-8601-date="2023-01-08"> | ||
<day>8</day> | ||
<month>1</month> | ||
<year>2023</year> | ||
</pub-date> | ||
<volume>9</volume> | ||
<issue>96</issue> | ||
<fpage>6383</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>heavy liquid metal</kwd> | ||
<kwd>lead-bismuth eutectic alloy</kwd> | ||
<kwd>standardization</kwd> | ||
<kwd>nuclear reactor cooling</kwd> | ||
</kwd-group> | ||
</article-meta> | ||
</front> | ||
<body> | ||
<sec id="summary"> | ||
<title>Summary</title> | ||
<p><monospace>lbh15</monospace> is a Python package that provides | ||
function correlations for the physical properties of the liquid metals | ||
used as coolant in GEN-IV liquid metal fast reactors | ||
(<italic>LMFR</italic>), such as those cooled by molten lead and | ||
lead-bismuth eutectic alloy. The package implements the correlations | ||
contained in the reference handbook edited by OECD/NEA | ||
(<xref alt="Fazio, 2015" rid="ref-nea" ref-type="bibr">Fazio, | ||
2015</xref>), also offering the possibility of adding new customized | ||
properties with minimal effort for the user. The properties of the | ||
liquid metal are uniquely defined by its thermodynamic state, namely | ||
by the temperature and pressure values. Alternatively, the physical | ||
properties can be used at the liquid metal object’s instantiation, | ||
provided that the inverse of the corresponding correlation has at | ||
least one root in the validity range (<italic>injective | ||
function</italic> property).</p> | ||
<p><monospace>lbh15</monospace> package is released under the | ||
<italic>GNU Lesser General Public License v3.0</italic>.</p> | ||
</sec> | ||
<sec id="statement-of-need"> | ||
<title>Statement of Need</title> | ||
<p>Thermal-hydraulic analysis is a key factor for the design and | ||
safety studies of <italic>LMFR</italic>s, involving the implementation | ||
and use of several numerical methods and physical data that are | ||
employed in different computational tools. A standardization of the | ||
methods is necessary to guarantee homogeneity, reproducibility, and | ||
comparability of the numerical results. This standardization is | ||
particularly important considering the growing community of users with | ||
robust quality assurance needs. This is an essential point to ensure | ||
effective and successful projects in both industrial and research | ||
environments, especially for nuclear science and engineering. | ||
Additionally, <italic>new</italic>cleo pursues efforts for data | ||
standardization to develop new units of lead-cooled fast reactors | ||
(<italic>LFR</italic>).</p> | ||
<p>In this context, standard libraries providing the correlations of | ||
physical properties for thermal-hydraulic computational tools are | ||
needed, such as CFD, system, and sub-channel codes concerning heavy | ||
liquid metals.</p> | ||
</sec> | ||
<sec id="implementation"> | ||
<title>Implementation</title> | ||
<p><monospace>lbh15</monospace> package takes inspiration from the | ||
<monospace>iapws</monospace> | ||
(<xref alt="Romera, 2021" rid="ref-iapwscode" ref-type="bibr">Romera, | ||
2021</xref>) Python package, which implements the water-related | ||
<italic>IAPWS</italic> full standard | ||
(<xref alt="International Association for the Properties of Water and Steam, 2018" rid="ref-iapws" ref-type="bibr">International | ||
Association for the Properties of Water and Steam, 2018</xref>). | ||
However, <monospace>lbh15</monospace> follows a different | ||
implementation approach.</p> | ||
<p>The efficiency and the effectiveness are assured by the | ||
<italic>Object-Oriented</italic> design and the <italic>Dynamic | ||
Loading</italic> approach, which have been applied throughout the | ||
entire development process. <monospace>lbh15</monospace> relies on the | ||
abstract liquid metal class; all classes describing the different | ||
metals inherit from it. The abstract class does not directly implement | ||
the property correlations, but it instead instantiates the property | ||
objects and provides the property values. In other words, the abstract | ||
liquid metal class acts as both <italic>factory</italic> of the | ||
property objects and <italic>proxy</italic> of the property values | ||
(<xref alt="Giridhar, 2016" rid="ref-pybook" ref-type="bibr">Giridhar, | ||
2016</xref>). This allows the user to add new custom properties | ||
without modifying the existing implementation of the liquid metal | ||
class.</p> | ||
</sec> | ||
<sec id="use"> | ||
<title>Use</title> | ||
<p>There are two main ways to use the package: either by instantiating | ||
a liquid metal object to access all its properties, or by | ||
instantiating an object for each specific property. The former | ||
approach provides a single entry point to all the liquid metal | ||
properties, which are evaluated at the specified thermodynamic state | ||
after checking that such state is valid (temperature between the | ||
melting and the boiling values, and positive pressure). In addition, | ||
this approach allows users to select the default correlations of the | ||
properties by means of the available class methods. The latter | ||
approach is best suited to cases where only a few specific properties | ||
are required for an individual thermodynamic state, since it offers | ||
faster instantiation and evaluation of the correlation functions.</p> | ||
</sec> | ||
<sec id="implemented-properties"> | ||
<title>Implemented Properties</title> | ||
<p>The properties implemented so far can be subdivided into two | ||
groups:</p> | ||
<list list-type="bullet"> | ||
<list-item> | ||
<p><italic>thermo-physical</italic>: saturation vapor pressure, | ||
surface tension, density, thermal expansion coefficient, speed of | ||
sound, isentropic compressibility, specific heat capacity, | ||
specific enthalpy, dynamic viscosity, electrical resistivity, | ||
thermal conductivity, and Prandtl number;</p> | ||
</list-item> | ||
<list-item> | ||
<p><italic>thermo-chemical</italic>: diffusivity and solubility of | ||
oxygen and of the impurities in the liquid metals, oxygen partial | ||
pressure, molar enthalpy, molar entropy, Gibbs free energy, and | ||
oxygen concentration range assuring corrosion-protective oxide | ||
layer on metallic structure.</p> | ||
</list-item> | ||
</list> | ||
</sec> | ||
<sec id="implementation-history"> | ||
<title>Implementation History</title> | ||
<p>The release of version <italic>1.1.0</italic> of the package | ||
<monospace>lbh15</monospace> was described by Panico & Tomatis | ||
(<xref alt="2023" rid="ref-nureth20" ref-type="bibr">2023</xref>). | ||
This version implemented only the thermo-physical properties.</p> | ||
<p>The current version <italic>2.1.0</italic> implements the | ||
thermo-chemical properties and updates the documentation accordingly, | ||
improving the overall understanding. Moreover, solutions have been | ||
adopted to improve performance and usability of the code such as | ||
enforcing vectorization over the whole implementation and using the | ||
Horner scheme to evaluate polynomials | ||
(<xref alt="Hildebrand, 1974" rid="ref-hornerbook" ref-type="bibr">Hildebrand, | ||
1974</xref>). Great attention is paid to the code quality. | ||
<italic>PEP8</italic> guidelines<xref ref-type="fn" rid="fn1">1</xref> | ||
are ensured by | ||
<italic>pycodestyle</italic><xref ref-type="fn" rid="fn2">2</xref>, | ||
and the automatic static analysis has been performed by applying | ||
<italic>pylint</italic><xref ref-type="fn" rid="fn3">3</xref>. The | ||
documentation of the current version includes a tutorial focusing on a | ||
volume of lead that is subjected to time-varying thermal loads, where | ||
the oxygen concentration is controlled to fall in the range where the | ||
protective oxide layer formation is assured | ||
(<xref alt="Fazio, 2015" rid="ref-nea" ref-type="bibr">Fazio, | ||
2015</xref>).</p> | ||
<p>The implementation of irradiated liquid metals’ properties with new | ||
tutorials is planned as future improvement.</p> | ||
</sec> | ||
<sec id="documentation"> | ||
<title>Documentation</title> | ||
<p>The documentation of <monospace>lbh15</monospace> is generated by | ||
<monospace>Sphinx</monospace> and published on | ||
<monospace>lbh15</monospace> <italic>Github Pages</italic> at the | ||
following address:</p> | ||
<p><monospace>https://newcleo-dev-team.github.io/lbh15/index.html</monospace>.</p> | ||
<p>It is composed of parts addressed separately to the developers and | ||
to the users. The documentation contains examples for users, from | ||
basic use to short tutorials for more advanced applications.</p> | ||
</sec> | ||
<sec id="authors-contribution-with-credit"> | ||
<title>Authors Contribution with | ||
<ext-link ext-link-type="uri" xlink:href="https://credit.niso.org/">CRediT</ext-link></title> | ||
<list list-type="bullet"> | ||
<list-item> | ||
<p>Gabriele Ottino: Software, Validation, Writing - original | ||
draft, Writing - review & editing</p> | ||
</list-item> | ||
<list-item> | ||
<p>Daniele Panico: Conceptualization, Software, Supervision, | ||
Writing - review & editing</p> | ||
</list-item> | ||
<list-item> | ||
<p>Daniele Tomatis: Conceptualization, Project Administration, | ||
Supervision, Writing - original draft, Writing - review & | ||
editing</p> | ||
</list-item> | ||
<list-item> | ||
<p>Pierre-Alexandre Pantel: Writing - review & editing</p> | ||
</list-item> | ||
</list> | ||
</sec> | ||
</body> | ||
<back> | ||
<ref-list> | ||
<ref id="ref-nea"> | ||
<element-citation publication-type="book"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Fazio</surname><given-names>C. et al.</given-names></name> | ||
</person-group> | ||
<source>Handbook on lead-bismuth eutectic alloy and lead properties, materials compatibility, thermal-hydraulics and technologies</source> | ||
<publisher-name>OECD/Nuclear Energy Agency (NEA), Paris, France</publisher-name> | ||
<year iso-8601-date="2015">2015</year> | ||
<uri>https://www.oecd-ilibrary.org/content/publication/42dcd531-en</uri> | ||
<pub-id pub-id-type="doi">10.1787/42dcd531-en</pub-id> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-pybook"> | ||
<element-citation publication-type="book"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Giridhar</surname><given-names>C.</given-names></name> | ||
</person-group> | ||
<source>Learning python design patterns</source> | ||
<publisher-name>Packt Publishing</publisher-name> | ||
<publisher-loc>Birmingham - Mumbai, 2nd edition</publisher-loc> | ||
<year iso-8601-date="2016">2016</year> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-nureth20"> | ||
<element-citation publication-type="paper-conference"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Panico</surname><given-names>D.</given-names></name> | ||
<name><surname>Tomatis</surname><given-names>D.</given-names></name> | ||
</person-group> | ||
<article-title>lbh15: A python package implementing lead, bismuth, and lead-bismuth eutectic thermophysical properties for fast reactor applications</article-title> | ||
<source>Proceedings of 20th international topical meeting on nuclear reactor thermal hydraulics (NURETH-20), washington DC, USA</source> | ||
<publisher-name>ANS</publisher-name> | ||
<year iso-8601-date="2023">2023</year> | ||
<pub-id pub-id-type="doi">10.13182/nureth20-40554</pub-id> | ||
<fpage>1</fpage> | ||
<lpage>12</lpage> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-iapwscode"> | ||
<element-citation publication-type="software"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Romera</surname><given-names>J. J. G.</given-names></name> | ||
</person-group> | ||
<article-title>Jjgomera/iapws:</article-title> | ||
<publisher-name>Zenodo</publisher-name> | ||
<year iso-8601-date="2021-05">2021</year><month>05</month> | ||
<uri>https://doi.org/10.5281/zenodo.4744318</uri> | ||
<pub-id pub-id-type="doi">10.5281/zenodo.4744318</pub-id> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-iapws"> | ||
<element-citation publication-type="report"> | ||
<person-group person-group-type="author"> | ||
<string-name>International Association for the Properties of Water and Steam</string-name> | ||
</person-group> | ||
<article-title>Revised release on the IAPWS formulation 1995 for the thermodynamic properties of ordinary water substance for general and scientific use</article-title> | ||
<year iso-8601-date="2018">2018</year> | ||
</element-citation> | ||
</ref> | ||
<ref id="ref-hornerbook"> | ||
<element-citation publication-type="book"> | ||
<person-group person-group-type="author"> | ||
<name><surname>Hildebrand</surname><given-names>F. B.</given-names></name> | ||
</person-group> | ||
<source>Introduction to numerical analysis</source> | ||
<publisher-name>McGraw-Hill</publisher-name> | ||
<year iso-8601-date="1974">1974</year> | ||
</element-citation> | ||
</ref> | ||
</ref-list> | ||
<fn-group> | ||
<fn id="fn1"> | ||
<label>1</label><p>https://www.python.org/dev/peps/pep-0008/ - | ||
<italic>Style Guide for Python Code. PEP 8.</italic> - G. van | ||
Rossum, B. Warsaw, and Coghlan - 2001</p> | ||
</fn> | ||
<fn id="fn2"> | ||
<label>2</label><p>https://pypi.org/project/pycodestyle/ - | ||
pycodestyle 2.11.1</p> | ||
</fn> | ||
<fn id="fn3"> | ||
<label>3</label><p>https://pypi.org/project/pylint/ - Pylint | ||
3.1.0</p> | ||
</fn> | ||
</fn-group> | ||
</back> | ||
</article> |