docs(docs): rebuilt
This commit is contained in:
@@ -29,7 +29,7 @@
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">fourdst::libcomposition<span id="projectnumber"> v1.9.0</span>
|
||||
<div id="projectname">fourdst::libcomposition<span id="projectnumber"> v2.0.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">Robust atomic species information library</div>
|
||||
</td>
|
||||
@@ -105,7 +105,7 @@ $(function(){initNavTree('index.html',''); initResizable(true); });
|
||||
<div class="textblock"><h1><a class="anchor" id="intro_sec"></a>
|
||||
Introduction</h1>
|
||||
<p><code>libcomposition</code> is a modern C++23 library designed for the creation, manipulation, and analysis of chemical compositions, with a focus on astrophysical applications. It provides a robust and user-friendly interface for handling material compositions defined by mass or number fractions.</p>
|
||||
<h3><a class="anchor" id="autotoc_md0"></a>
|
||||
<h3><a class="anchor" id="autotoc_md10"></a>
|
||||
Key Features</h3>
|
||||
<ul>
|
||||
<li><b>Dual-Mode Operation</b>: Natively supports compositions defined by <b>mass fraction</b> or <b>number fraction</b>.</li>
|
||||
@@ -118,7 +118,7 @@ Key Features</h3>
|
||||
<h1><a class="anchor" id="install_sec"></a>
|
||||
Installation</h1>
|
||||
<p><code>libcomposition</code> uses the Meson build system. A C++23 compatible compiler is required.</p>
|
||||
<h3><a class="anchor" id="autotoc_md2"></a>
|
||||
<h3><a class="anchor" id="autotoc_md12"></a>
|
||||
Build Steps</h3>
|
||||
<p><b>Setup the build directory:</b></p>
|
||||
<p>The first step is to use meson to set up an out of source build. Note that this means that you can have multiple builds configured and cleanly seperated!</p>
|
||||
@@ -129,7 +129,7 @@ Build Steps</h3>
|
||||
</div><!-- fragment --><p><b>Install the library:</b></p>
|
||||
<p>This will also install a pkg-config file!</p>
|
||||
<div class="fragment"><div class="line">sudo meson install -C builddir</div>
|
||||
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md3"></a>
|
||||
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md13"></a>
|
||||
Build Options</h3>
|
||||
<p>You can enable the generation of a <code>pkg-config</code> file during the setup step, which simplifies linking the library in other projects. by default this is true; it can be useful to disable this when using some build system orgestrator (such as meson-python).</p>
|
||||
<div class="fragment"><div class="line"># Enable pkg-config file generation</div>
|
||||
@@ -137,7 +137,7 @@ Build Options</h3>
|
||||
</div><!-- fragment --><hr />
|
||||
<h1><a class="anchor" id="usage_sec"></a>
|
||||
Usage</h1>
|
||||
<h3><a class="anchor" id="autotoc_md5"></a>
|
||||
<h3><a class="anchor" id="autotoc_md15"></a>
|
||||
Linking with pkg-config</h3>
|
||||
<p>If you installed <code>libcomposition</code> with the <code>pkg-config</code> option enabled, you can get the necessary compiler and linker flags easily:</p>
|
||||
<div class="fragment"><div class="line"># Get compiler flags (include paths)</div>
|
||||
@@ -146,9 +146,9 @@ Linking with pkg-config</h3>
|
||||
<div class="line"># Get linker flags (library paths and names)</div>
|
||||
<div class="line">pkg-config --libs fourdst_composition</div>
|
||||
</div><!-- fragment --><p><b>Example compilation command:</b> </p><div class="fragment"><div class="line">g++ my_app.cpp $(pkg-config --cflags --libs fourdst_composition) -o my_app</div>
|
||||
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md6"></a>
|
||||
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md16"></a>
|
||||
C++ Usage Examples</h3>
|
||||
<h4><a class="anchor" id="autotoc_md7"></a>
|
||||
<h4><a class="anchor" id="autotoc_md17"></a>
|
||||
1. Basic Mass Fraction Composition</h4>
|
||||
<p>The most common use case is defining a composition by mass fractions (X, Y, Z).</p>
|
||||
<div class="fragment"><div class="line"><span class="preprocessor">#include <iostream></span></div>
|
||||
@@ -159,32 +159,30 @@ C++ Usage Examples</h3>
|
||||
<div class="line"> <a class="code hl_class" href="classfourdst_1_1composition_1_1_composition.html">fourdst::composition::Composition</a> comp;</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// 2. Register the symbols you want to use</span></div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a1bc2e64f87c12befdc2bc767e7405661">registerSymbol</a>(<span class="stringliteral">"H-1"</span>);</div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a1bc2e64f87c12befdc2bc767e7405661">registerSymbol</a>(<span class="stringliteral">"He-4"</span>);</div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a3ab4dcda0bfd1a35b169bcc57fe66725">registerSymbol</a>(<span class="stringliteral">"H-1"</span>);</div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a3ab4dcda0bfd1a35b169bcc57fe66725">registerSymbol</a>(<span class="stringliteral">"He-4"</span>);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// 3. Set their mass fractions</span></div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a493224656aa3ade68389250720ef09af">setMassFraction</a>(<span class="stringliteral">"H-1"</span>, 0.75);</div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a493224656aa3ade68389250720ef09af">setMassFraction</a>(<span class="stringliteral">"He-4"</span>, 0.25);</div>
|
||||
<div class="line"> comp.setMassFraction(<span class="stringliteral">"H-1"</span>, 0.75);</div>
|
||||
<div class="line"> comp.setMassFraction(<span class="stringliteral">"He-4"</span>, 0.25);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// 4. Finalize the composition to validate it and compute global properties</span></div>
|
||||
<div class="line"> <span class="keywordflow">if</span> (comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a72d063a74a9d2197065884a2cea57a14">finalize</a>()) {</div>
|
||||
<div class="line"> <span class="keywordflow">if</span> (comp.finalize()) {</div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"Composition finalized successfully!"</span> << std::endl;</div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"H-1 Mass Fraction: "</span> << comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#aae07019ab6e02394e6ea353e0b98a417">getMassFraction</a>(<span class="stringliteral">"H-1"</span>) << std::endl;</div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"Mean Particle Mass: "</span> << comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a796386824d1358527fed7c6b537935d8">getMeanParticleMass</a>() << <span class="stringliteral">" g/mol"</span> << std::endl;</div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"H-1 Mass Fraction: "</span> << comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a9ea2b673341fdc67afeb0f0517a54c8c">getMassFraction</a>(<span class="stringliteral">"H-1"</span>) << std::endl;</div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"Mean Particle Mass: "</span> << comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#afbbb5e51ad5ae5c0fa6bc0094195aecd">getMeanParticleMass</a>() << <span class="stringliteral">" g/mol"</span> << std::endl;</div>
|
||||
<div class="line"> } <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"> std::cerr << <span class="stringliteral">"Failed to finalize composition."</span> << std::endl;</div>
|
||||
<div class="line"> }</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line">}</div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html">fourdst::composition::Composition</a></div><div class="ttdoc">Manages a collection of chemical species and their abundances.</div><div class="ttdef"><b>Definition</b> <a href="composition_8h_source.html#l00255">composition.h:255</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a1bc2e64f87c12befdc2bc767e7405661"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a1bc2e64f87c12befdc2bc767e7405661">fourdst::composition::Composition::registerSymbol</a></div><div class="ttdeci">void registerSymbol(const std::string &symbol, bool massFracMode=true)</div><div class="ttdoc">Registers a new symbol for inclusion in the composition.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00255">composition.cpp:255</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a493224656aa3ade68389250720ef09af"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a493224656aa3ade68389250720ef09af">fourdst::composition::Composition::setMassFraction</a></div><div class="ttdeci">double setMassFraction(const std::string &symbol, const double &mass_fraction)</div><div class="ttdoc">Sets the mass fraction for a given symbol.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00343">composition.cpp:343</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a72d063a74a9d2197065884a2cea57a14"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a72d063a74a9d2197065884a2cea57a14">fourdst::composition::Composition::finalize</a></div><div class="ttdeci">bool finalize(bool norm=false)</div><div class="ttdoc">Finalizes the composition, making it ready for querying.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00445">composition.cpp:445</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a796386824d1358527fed7c6b537935d8"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a796386824d1358527fed7c6b537935d8">fourdst::composition::Composition::getMeanParticleMass</a></div><div class="ttdeci">double getMeanParticleMass() const override</div><div class="ttdoc">Compute the mean particle mass of the composition.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00690">composition.cpp:690</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_aae07019ab6e02394e6ea353e0b98a417"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#aae07019ab6e02394e6ea353e0b98a417">fourdst::composition::Composition::getMassFraction</a></div><div class="ttdeci">std::unordered_map< std::string, double > getMassFraction() const override</div><div class="ttdoc">Gets the mass fractions of all species in the composition.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00601">composition.cpp:601</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html">fourdst::composition::Composition</a></div><div class="ttdoc">Manages a collection of chemical species and their abundances.</div><div class="ttdef"><b>Definition</b> <a href="composition_8h_source.html#l00097">composition.h:97</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a3ab4dcda0bfd1a35b169bcc57fe66725"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a3ab4dcda0bfd1a35b169bcc57fe66725">fourdst::composition::Composition::registerSymbol</a></div><div class="ttdeci">void registerSymbol(const std::string &symbol)</div><div class="ttdoc">Registers a new symbol for inclusion in the composition.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00178">composition.cpp:178</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a9ea2b673341fdc67afeb0f0517a54c8c"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a9ea2b673341fdc67afeb0f0517a54c8c">fourdst::composition::Composition::getMassFraction</a></div><div class="ttdeci">std::unordered_map< atomic::Species, double > getMassFraction() const noexcept override</div><div class="ttdoc">Gets the mass fractions of all species in the composition.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00251">composition.cpp:251</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_afbbb5e51ad5ae5c0fa6bc0094195aecd"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#afbbb5e51ad5ae5c0fa6bc0094195aecd">fourdst::composition::Composition::getMeanParticleMass</a></div><div class="ttdeci">double getMeanParticleMass() const noexcept override</div><div class="ttdoc">Compute the mean particle mass of the composition.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00311">composition.cpp:311</a></div></div>
|
||||
<div class="ttc" id="acomposition_8h_html"><div class="ttname"><a href="composition_8h.html">composition.h</a></div></div>
|
||||
</div><!-- fragment --><h4><a class="anchor" id="autotoc_md8"></a>
|
||||
</div><!-- fragment --><h4><a class="anchor" id="autotoc_md18"></a>
|
||||
2. Number Fraction Composition and Mode Switching</h4>
|
||||
<p>The library can also work with number (mole) fractions and switch between modes.</p>
|
||||
<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="composition_8h.html">fourdst/composition/composition.h</a>"</span></div>
|
||||
@@ -194,31 +192,29 @@ C++ Usage Examples</h3>
|
||||
<div class="line"> <a class="code hl_class" href="classfourdst_1_1composition_1_1_composition.html">fourdst::composition::Composition</a> comp;</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// Register symbols in number fraction mode</span></div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a1bc2e64f87c12befdc2bc767e7405661">registerSymbol</a>(<span class="stringliteral">"H-1"</span>, <span class="keyword">false</span>); <span class="comment">// massFracMode = false</span></div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a1bc2e64f87c12befdc2bc767e7405661">registerSymbol</a>(<span class="stringliteral">"He-4"</span>, <span class="keyword">false</span>);</div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a3ab4dcda0bfd1a35b169bcc57fe66725">registerSymbol</a>(<span class="stringliteral">"H-1"</span>, <span class="keyword">false</span>); <span class="comment">// massFracMode = false</span></div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a3ab4dcda0bfd1a35b169bcc57fe66725">registerSymbol</a>(<span class="stringliteral">"He-4"</span>, <span class="keyword">false</span>);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a7d4d748f3ee25e68751fb143717ed080">setNumberFraction</a>(<span class="stringliteral">"H-1"</span>, 0.9);</div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a7d4d748f3ee25e68751fb143717ed080">setNumberFraction</a>(<span class="stringliteral">"He-4"</span>, 0.1);</div>
|
||||
<div class="line"> comp.setNumberFraction(<span class="stringliteral">"H-1"</span>, 0.9);</div>
|
||||
<div class="line"> comp.setNumberFraction(<span class="stringliteral">"He-4"</span>, 0.1);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="keywordflow">if</span> (comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a72d063a74a9d2197065884a2cea57a14">finalize</a>()) {</div>
|
||||
<div class="line"> <span class="keywordflow">if</span> (comp.finalize()) {</div>
|
||||
<div class="line"> <span class="comment">// We can get number fractions directly</span></div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"He-4 Number Fraction: "</span> << comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a34f71d4d8f0297c576fd62fabd490305">getNumberFraction</a>(<span class="stringliteral">"He-4"</span>) << std::endl;</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// Or get the equivalent mass fraction</span></div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"He-4 Mass Fraction: "</span> << comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#aae07019ab6e02394e6ea353e0b98a417">getMassFraction</a>(<span class="stringliteral">"He-4"</span>) << std::endl;</div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"He-4 Mass Fraction: "</span> << comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a9ea2b673341fdc67afeb0f0517a54c8c">getMassFraction</a>(<span class="stringliteral">"He-4"</span>) << std::endl;</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// Switch the entire composition to mass fraction mode</span></div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a0af981ed1074b26c237cf6cf35f82c9e">setCompositionMode</a>(<span class="keyword">true</span>); <span class="comment">// true for mass fraction mode</span></div>
|
||||
<div class="line"> comp.setCompositionMode(<span class="keyword">true</span>); <span class="comment">// true for mass fraction mode</span></div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// Now, getting the mass fraction is a direct lookup</span></div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"He-4 Mass Fraction (after mode switch): "</span> << comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#aae07019ab6e02394e6ea353e0b98a417">getMassFraction</a>(<span class="stringliteral">"He-4"</span>) << std::endl;</div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"He-4 Mass Fraction (after mode switch): "</span> << comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a9ea2b673341fdc67afeb0f0517a54c8c">getMassFraction</a>(<span class="stringliteral">"He-4"</span>) << std::endl;</div>
|
||||
<div class="line"> }</div>
|
||||
<div class="line">}</div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a0af981ed1074b26c237cf6cf35f82c9e"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a0af981ed1074b26c237cf6cf35f82c9e">fourdst::composition::Composition::setCompositionMode</a></div><div class="ttdeci">void setCompositionMode(bool massFracMode)</div><div class="ttdoc">Sets the composition mode (mass fraction vs. number fraction).</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00762">composition.cpp:762</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a34f71d4d8f0297c576fd62fabd490305"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a34f71d4d8f0297c576fd62fabd490305">fourdst::composition::Composition::getNumberFraction</a></div><div class="ttdeci">double getNumberFraction(const std::string &symbol) const override</div><div class="ttdoc">Gets the number fraction for a given symbol.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00610">composition.cpp:610</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a7d4d748f3ee25e68751fb143717ed080"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a7d4d748f3ee25e68751fb143717ed080">fourdst::composition::Composition::setNumberFraction</a></div><div class="ttdeci">double setNumberFraction(const std::string &symbol, const double &number_fraction)</div><div class="ttdoc">Sets the number fraction for a given symbol.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00374">composition.cpp:374</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a34f71d4d8f0297c576fd62fabd490305"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a34f71d4d8f0297c576fd62fabd490305">fourdst::composition::Composition::getNumberFraction</a></div><div class="ttdeci">double getNumberFraction(const std::string &symbol) const override</div><div class="ttdoc">Gets the number fraction for a given symbol. See the overload for species-based lookup for more detai...</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00260">composition.cpp:260</a></div></div>
|
||||
<div class="ttc" id="aexceptions__composition_8h_html"><div class="ttname"><a href="exceptions__composition_8h.html">exceptions_composition.h</a></div></div>
|
||||
</div><!-- fragment --><h4><a class="anchor" id="autotoc_md9"></a>
|
||||
</div><!-- fragment --><h4><a class="anchor" id="autotoc_md19"></a>
|
||||
3. Mixing Two Compositions</h4>
|
||||
<p>You can easily mix two compositions. The library handles the union of all species.</p>
|
||||
<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="composition_8h.html">fourdst/composition/composition.h</a>"</span></div>
|
||||
@@ -235,13 +231,12 @@ C++ Usage Examples</h3>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// Mix them with a 75/25 ratio using the mix() method</span></div>
|
||||
<div class="line"> <span class="comment">// 0.75 of comp1, 0.25 of comp2</span></div>
|
||||
<div class="line"> <a class="code hl_class" href="classfourdst_1_1composition_1_1_composition.html">fourdst::composition::Composition</a> mixed2 = comp1.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a3aead72892606725a4149a5f65bd31ec">mix</a>(comp2, 0.75);</div>
|
||||
<div class="line"> <a class="code hl_class" href="classfourdst_1_1composition_1_1_composition.html">fourdst::composition::Composition</a> mixed2 = comp1.mix(comp2, 0.75);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"50/50 Mix H-1: "</span> << mixed.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#aae07019ab6e02394e6ea353e0b98a417">getMassFraction</a>(<span class="stringliteral">"H-1"</span>) << std::endl; <span class="comment">// -> 0.5</span></div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"75/25 Mix H-1: "</span> << mixed2.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#aae07019ab6e02394e6ea353e0b98a417">getMassFraction</a>(<span class="stringliteral">"H-1"</span>) << std::endl; <span class="comment">// -> 0.75</span></div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"50/50 Mix H-1: "</span> << mixed.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a9ea2b673341fdc67afeb0f0517a54c8c">getMassFraction</a>(<span class="stringliteral">"H-1"</span>) << std::endl; <span class="comment">// -> 0.5</span></div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"75/25 Mix H-1: "</span> << mixed2.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a9ea2b673341fdc67afeb0f0517a54c8c">getMassFraction</a>(<span class="stringliteral">"H-1"</span>) << std::endl; <span class="comment">// -> 0.75</span></div>
|
||||
<div class="line">}</div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1_composition_html_a3aead72892606725a4149a5f65bd31ec"><div class="ttname"><a href="classfourdst_1_1composition_1_1_composition.html#a3aead72892606725a4149a5f65bd31ec">fourdst::composition::Composition::mix</a></div><div class="ttdeci">Composition mix(const Composition &other, double fraction) const</div><div class="ttdoc">Mixes this composition with another to produce a new composition.</div><div class="ttdef"><b>Definition</b> <a href="composition_8cpp_source.html#l00533">composition.cpp:533</a></div></div>
|
||||
</div><!-- fragment --><h4><a class="anchor" id="autotoc_md10"></a>
|
||||
</div><!-- fragment --><h4><a class="anchor" id="autotoc_md20"></a>
|
||||
4. Error Handling</h4>
|
||||
<p>The library uses exceptions to report errors. Always wrap calls in a <code>try-catch</code> block for robust code.</p>
|
||||
<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="composition_8h.html">fourdst/composition/composition.h</a>"</span></div>
|
||||
@@ -249,31 +244,30 @@ C++ Usage Examples</h3>
|
||||
<div class="line"> </div>
|
||||
<div class="line"><span class="keywordtype">void</span> error_example() {</div>
|
||||
<div class="line"> <a class="code hl_class" href="classfourdst_1_1composition_1_1_composition.html">fourdst::composition::Composition</a> comp;</div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a1bc2e64f87c12befdc2bc767e7405661">registerSymbol</a>(<span class="stringliteral">"H-1"</span>);</div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a493224656aa3ade68389250720ef09af">setMassFraction</a>(<span class="stringliteral">"H-1"</span>, 1.0);</div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a3ab4dcda0bfd1a35b169bcc57fe66725">registerSymbol</a>(<span class="stringliteral">"H-1"</span>);</div>
|
||||
<div class="line"> comp.setMassFraction(<span class="stringliteral">"H-1"</span>, 1.0);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="keywordflow">try</span> {</div>
|
||||
<div class="line"> <span class="comment">// This will throw, because the composition is not finalized yet.</span></div>
|
||||
<div class="line"> <span class="keywordtype">double</span> mass = comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#aae07019ab6e02394e6ea353e0b98a417">getMassFraction</a>(<span class="stringliteral">"H-1"</span>);</div>
|
||||
<div class="line"> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code hl_class" href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">fourdst::composition::exceptions::CompositionNotFinalizedError</a>& e) {</div>
|
||||
<div class="line"> std::cerr << <span class="stringliteral">"Caught expected error: "</span> << e.<a class="code hl_function" href="classfourdst_1_1composition_1_1exceptions_1_1_composition_error.html#ae44ceddb19da8a8cda7ee150b6826d08">what</a>() << std::endl;</div>
|
||||
<div class="line"> <span class="keywordtype">double</span> mass = comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a9ea2b673341fdc67afeb0f0517a54c8c">getMassFraction</a>(<span class="stringliteral">"H-1"</span>);</div>
|
||||
<div class="line"> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> fourdst::composition::exceptions::CompositionNotFinalizedError& e) {</div>
|
||||
<div class="line"> std::cerr << <span class="stringliteral">"Caught expected error: "</span> << e.what() << std::endl;</div>
|
||||
<div class="line"> }</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="keywordflow">try</span> {</div>
|
||||
<div class="line"> <span class="comment">// This will throw, because "Li-6" was never registered.</span></div>
|
||||
<div class="line"> comp.<a class="code hl_function" href="classfourdst_1_1composition_1_1_composition.html#a493224656aa3ade68389250720ef09af">setMassFraction</a>(<span class="stringliteral">"Li-6"</span>, 0.1);</div>
|
||||
<div class="line"> comp.setMassFraction(<span class="stringliteral">"Li-6"</span>, 0.1);</div>
|
||||
<div class="line"> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code hl_class" href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">fourdst::composition::exceptions::UnregisteredSymbolError</a>& e) {</div>
|
||||
<div class="line"> std::cerr << <span class="stringliteral">"Caught expected error: "</span> << e.<a class="code hl_function" href="classfourdst_1_1composition_1_1exceptions_1_1_composition_error.html#ae44ceddb19da8a8cda7ee150b6826d08">what</a>() << std::endl;</div>
|
||||
<div class="line"> }</div>
|
||||
<div class="line">}</div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1exceptions_1_1_composition_error_html_ae44ceddb19da8a8cda7ee150b6826d08"><div class="ttname"><a href="classfourdst_1_1composition_1_1exceptions_1_1_composition_error.html#ae44ceddb19da8a8cda7ee150b6826d08">fourdst::composition::exceptions::CompositionError::what</a></div><div class="ttdeci">const char * what() const noexcept override</div><div class="ttdoc">Returns the error message.</div><div class="ttdef"><b>Definition</b> <a href="exceptions__composition_8h_source.html#l00032">exceptions_composition.h:32</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error_html"><div class="ttname"><a href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">fourdst::composition::exceptions::CompositionNotFinalizedError</a></div><div class="ttdoc">Exception thrown when an operation is attempted on a composition that has not been finalized.</div><div class="ttdef"><b>Definition</b> <a href="exceptions__composition_8h_source.html#l00074">exceptions_composition.h:74</a></div></div>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error_html"><div class="ttname"><a href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">fourdst::composition::exceptions::UnregisteredSymbolError</a></div><div class="ttdoc">Exception thrown when a symbol is used that has not been registered.</div><div class="ttdef"><b>Definition</b> <a href="exceptions__composition_8h_source.html#l00111">exceptions_composition.h:111</a></div></div>
|
||||
</div><!-- fragment --><h4><a class="anchor" id="autotoc_md11"></a>
|
||||
<div class="ttc" id="aclassfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error_html"><div class="ttname"><a href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">fourdst::composition::exceptions::UnregisteredSymbolError</a></div><div class="ttdoc">Exception thrown when a symbol is used that has not been registered.</div><div class="ttdef"><b>Definition</b> <a href="exceptions__composition_8h_source.html#l00051">exceptions_composition.h:51</a></div></div>
|
||||
</div><!-- fragment --><h4><a class="anchor" id="autotoc_md21"></a>
|
||||
5. Accessing Atomic Data</h4>
|
||||
<p>You can directly access the static database of all known species.</p>
|
||||
<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="species_8h.html">fourdst/composition/species.h</a>"</span> <span class="comment">// Provides static instances like H_1</span></div>
|
||||
<div class="line"><span class="preprocessor">#include "<a class="code" href="atomic_species_8h.html">fourdst/composition/atomicSpecies.h</a>"</span> <span class="comment">// Provides the main 'species' map</span></div>
|
||||
<div class="fragment"><div class="line"><span class="preprocessor">#include "fourdst/composition/species.h"</span> <span class="comment">// Provides static instances like H_1</span></div>
|
||||
<div class="line"><span class="preprocessor">#include "fourdst/composition/atomicSpecies.h"</span> <span class="comment">// Provides the main 'species' map</span></div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"><span class="keywordtype">void</span> data_example() {</div>
|
||||
<div class="line"> <span class="comment">// Access via the map</span></div>
|
||||
@@ -284,16 +278,14 @@ C++ Usage Examples</h3>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"H-1 spin: "</span> << <a class="code hl_function" href="namespacefourdst_1_1atomic.html#a6766bc834fd656df51bdcf22f7d97877">fourdst::atomic::H_1</a>.spin() << std::endl;</div>
|
||||
<div class="line"> std::cout << <span class="stringliteral">"F-18 half-life: "</span> << <a class="code hl_function" href="namespacefourdst_1_1atomic.html#a3c09ded079905f8c355f9ea87b6b191f">fourdst::atomic::F_18</a>.halfLife() << <span class="stringliteral">" s"</span> << std::endl;</div>
|
||||
<div class="line">}</div>
|
||||
<div class="ttc" id="aatomic_species_8h_html"><div class="ttname"><a href="atomic_species_8h.html">atomicSpecies.h</a></div></div>
|
||||
<div class="ttc" id="anamespacefourdst_1_1atomic_html_a3c09ded079905f8c355f9ea87b6b191f"><div class="ttname"><a href="namespacefourdst_1_1atomic.html#a3c09ded079905f8c355f9ea87b6b191f">fourdst::atomic::F_18</a></div><div class="ttdeci">static const Species F_18("F-18", "F", 0, 9, 9, 18, 7631.6383, "B-", -4444.5049, 6584.04, "+", "+=100", 18.000937324, 0.497)</div></div>
|
||||
<div class="ttc" id="anamespacefourdst_1_1atomic_html_a3f619cc8f8b2cd718a4082c6adb0de90"><div class="ttname"><a href="namespacefourdst_1_1atomic.html#a3f619cc8f8b2cd718a4082c6adb0de90">fourdst::atomic::species</a></div><div class="ttdeci">static const std::unordered_map< std::string, const Species & > species</div><div class="ttdoc">Map of species names to their corresponding Species objects.</div><div class="ttdef"><b>Definition</b> <a href="species_8h_source.html#l03579">species.h:3579</a></div></div>
|
||||
<div class="ttc" id="anamespacefourdst_1_1atomic_html_a6766bc834fd656df51bdcf22f7d97877"><div class="ttname"><a href="namespacefourdst_1_1atomic.html#a6766bc834fd656df51bdcf22f7d97877">fourdst::atomic::H_1</a></div><div class="ttdeci">static const Species H_1("H-1", "H", -1, 0, 1, 1, 0.0, "B-", std::numeric_limits< double >::quiet_NaN(), std::numeric_limits< double >::infinity(), "/2+*", "S=99.9855 78", 1.007825031898, 1.4e-05)</div></div>
|
||||
<div class="ttc" id="aspecies_8h_html"><div class="ttname"><a href="species_8h.html">species.h</a></div></div>
|
||||
</div><!-- fragment --><hr />
|
||||
<h1><a class="anchor" id="test_sec"></a>
|
||||
Testing</h1>
|
||||
<p><code>libcomposition</code> is tested using the GoogleTest framework. The test suite provides high coverage of the library's functionality.</p>
|
||||
<h3><a class="anchor" id="autotoc_md13"></a>
|
||||
<h3><a class="anchor" id="autotoc_md23"></a>
|
||||
Test Coverage Includes:</h3>
|
||||
<ul>
|
||||
<li><b>Atomic Data Validation</b>: Spot checks on isotopic properties (mass, half-life, spin) for a wide range of elements to ensure the underlying data files are parsed and represented correctly.</li>
|
||||
|
||||
Reference in New Issue
Block a user