<ahref="composition_8cpp.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aid="l00001"name="l00001"></a><spanclass="lineno"> 1</span><spanclass="comment">/* ***********************************************************************</span></div>
<divclass="line"><aid="l00007"name="l00007"></a><spanclass="lineno"> 7</span><spanclass="comment">// 4DSSE is free software; you can use it and/or modify</span></div>
<divclass="line"><aid="l00008"name="l00008"></a><spanclass="lineno"> 8</span><spanclass="comment">// it under the terms and restrictions the GNU General Library Public</span></div>
<divclass="line"><aid="l00009"name="l00009"></a><spanclass="lineno"> 9</span><spanclass="comment">// License version 3 (GPLv3) as published by the Free Software Foundation.</span></div>
<divclass="line"><aid="l00011"name="l00011"></a><spanclass="lineno"> 11</span><spanclass="comment">// 4DSSE is distributed in the hope that it will be useful,</span></div>
<divclass="line"><aid="l00012"name="l00012"></a><spanclass="lineno"> 12</span><spanclass="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<divclass="line"><aid="l00013"name="l00013"></a><spanclass="lineno"> 13</span><spanclass="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</span></div>
<divclass="line"><aid="l00014"name="l00014"></a><spanclass="lineno"> 14</span><spanclass="comment">// See the GNU Library General Public License for more details.</span></div>
<divclass="line"><aid="l00016"name="l00016"></a><spanclass="lineno"> 16</span><spanclass="comment">// You should have received a copy of the GNU Library General Public License</span></div>
<divclass="line"><aid="l00017"name="l00017"></a><spanclass="lineno"> 17</span><spanclass="comment">// along with this software; if not, write to the Free Software</span></div>
<divclass="line"><aid="l00018"name="l00018"></a><spanclass="lineno"> 18</span><spanclass="comment">// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</span></div>
<divclass="line"><aid="l00042"name="l00042"></a><spanclass="lineno"> 42</span><spanclass="keyword">template</span><<spanclass="keyword">typename</span> A, <spanclass="keyword">typename</span> B></div>
<divclass="line"><aid="l00052"name="l00052"></a><spanclass="lineno"> 52</span> std::ranges::sort(indices, [&](<spanclass="keywordtype">size_t</span> a, <spanclass="keywordtype">size_t</span> b) {</div>
<divclass="line"><aid="l00104"name="l00104"></a><spanclass="lineno"> 104</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_mode_error.html">exceptions::CompositionModeError</a>(<spanclass="stringliteral">"Composition entry is in number fraction mode."</span>);</div>
<divclass="line"><aid="l00112"name="l00112"></a><spanclass="lineno"> 112</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_mode_error.html">exceptions::CompositionModeError</a>(<spanclass="stringliteral">"Composition entry is in mass fraction mode."</span>);</div>
<divclass="line"><aid="l00114"name="l00114"></a><spanclass="lineno"> 114</span><spanclass="comment">// In number fraction mode, the value is cached during the mode switch.</span></div>
<divclass="line"><aid="l00138"name="l00138"></a><spanclass="lineno"> 138</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_mode_error.html">exceptions::CompositionModeError</a>(<spanclass="stringliteral">"Composition entry is in number fraction mode."</span>);</div>
<divclass="line"><aid="l00140"name="l00140"></a><spanclass="lineno"> 140</span><spanclass="comment">// Set the invariant from the given mass fraction</span></div>
<divclass="line"><aid="l00152"name="l00152"></a><spanclass="lineno"> 152</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_mode_error.html">exceptions::CompositionModeError</a>(<spanclass="stringliteral">"Composition entry is in mass fraction mode."</span>);</div>
<divclass="line"><aid="l00154"name="l00154"></a><spanclass="lineno"> 154</span><spanclass="comment">// In number fraction mode, we only cache the value. The invariant</span></div>
<divclass="line"><aid="l00155"name="l00155"></a><spanclass="lineno"> 155</span><spanclass="comment">// m_molesPerMass cannot be calculated until finalize() provides global context.</span></div>
<divclass="line"><aid="l00166"name="l00166"></a><spanclass="lineno"> 166</span><spanclass="comment">// The invariant m_molesPerMass does not change when switching mode.</span></div>
<divclass="line"><aid="l00167"name="l00167"></a><spanclass="lineno"> 167</span><spanclass="comment">// The cached number fraction is now stale, but that's okay.</span></div>
<divclass="line"><aid="l00178"name="l00178"></a><spanclass="lineno"> 178</span><spanclass="comment">// Calculate and cache the number fraction for the new mode.</span></div>
<divclass="line"><aid="l00209"name="l00209"></a><spanclass="lineno"> 209</span> LOG_CRITICAL(m_logger, <spanclass="stringliteral">"The number of symbols and fractions must be equal (got {} symbols and {} fractions)."</span>, symbols.size(), fractions.size());</div>
<divclass="line"><aid="l00210"name="l00210"></a><spanclass="lineno"> 210</span> throw exceptions::InvalidCompositionError(<spanclass="stringliteral">"The number of symbols and fractions must be equal. Got "</span> + std::to_string(symbols.size()) + <spanclass="stringliteral">" symbols and "</span> + std::to_string(fractions.size()) + <spanclass="stringliteral">" fractions."</span>);</div>
<divclass="line"><aid="l00227"name="l00227"></a><spanclass="lineno"> 227</span> std::string msg = <spanclass="stringliteral">"Failed to finalize composition on construction. "</span>;</div>
<divclass="line"><aid="l00228"name="l00228"></a><spanclass="lineno"> 228</span> msg += <spanclass="stringliteral">"Construction of a composition object requires that the sum of the fractions vector be 1.\n"</span>;</div>
<divclass="line"><aid="l00335"name="l00335"></a><spanclass="lineno"> 335</span><spanclass="keyword">const</span><spanclass="keywordtype">double</span> sum = std::accumulate(fractions.begin(), fractions.end(), 0.0);</div>
<divclass="line"><aid="l00336"name="l00336"></a><spanclass="lineno"> 336</span><spanclass="keywordflow">if</span> (sum < 0.999999 || sum > 1.000001) {</div>
<divclass="line"><aid="l00337"name="l00337"></a><spanclass="lineno"> 337</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"The sum of fractions must be equal to 1 (expected 1, got {})."</span>, sum);</div>
<divclass="line"><aid="l00345"name="l00345"></a><spanclass="lineno"> 345</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Symbol {} is not registered."</span>, symbol);</div>
<divclass="line"><aid="l00346"name="l00346"></a><spanclass="lineno"> 346</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">exceptions::UnregisteredSymbolError</a>(<spanclass="stringliteral">"Symbol ("</span> + symbol + <spanclass="stringliteral">") is not registered."</span>);</div>
<divclass="line"><aid="l00349"name="l00349"></a><spanclass="lineno"> 349</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition is in number fraction mode."</span>);</div>
<divclass="line"><aid="l00350"name="l00350"></a><spanclass="lineno"> 350</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_mode_error.html">exceptions::CompositionModeError</a>(<spanclass="stringliteral">"Composition is in number fraction mode."</span>);</div>
<divclass="line"><aid="l00353"name="l00353"></a><spanclass="lineno"> 353</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Mass fraction must be between 0 and 1 for symbol {}. Currently it is {}."</span>, symbol, mass_fraction);</div>
<divclass="line"><aid="l00354"name="l00354"></a><spanclass="lineno"> 354</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_invalid_composition_error.html">exceptions::InvalidCompositionError</a>(<spanclass="stringliteral">"Mass fraction must be between 0 and 1."</span>);</div>
<divclass="line"><aid="l00364"name="l00364"></a><spanclass="lineno"> 364</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_invalid_composition_error.html">exceptions::InvalidCompositionError</a>(<spanclass="stringliteral">"The number of symbols and mass fractions must be equal."</span>);</div>
<divclass="line"><aid="l00379"name="l00379"></a><spanclass="lineno"> 379</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Symbol {} is not registered."</span>, symbol);</div>
<divclass="line"><aid="l00380"name="l00380"></a><spanclass="lineno"> 380</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">exceptions::UnregisteredSymbolError</a>(<spanclass="stringliteral">"Symbol ("</span> + symbol + <spanclass="stringliteral">") is not registered."</span>);</div>
<divclass="line"><aid="l00383"name="l00383"></a><spanclass="lineno"> 383</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition is in mass fraction mode."</span>);</div>
<divclass="line"><aid="l00384"name="l00384"></a><spanclass="lineno"> 384</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_mode_error.html">exceptions::CompositionModeError</a>(<spanclass="stringliteral">"Composition is in mass fraction mode."</span>);</div>
<divclass="line"><aid="l00387"name="l00387"></a><spanclass="lineno"> 387</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Number fraction must be between 0 and 1 for symbol {}. Currently it is {}."</span>, symbol, number_fraction);</div>
<divclass="line"><aid="l00388"name="l00388"></a><spanclass="lineno"> 388</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_invalid_composition_error.html">exceptions::InvalidCompositionError</a>(<spanclass="stringliteral">"Number fraction must be between 0 and 1."</span>);</div>
<divclass="line"><aid="l00401"name="l00401"></a><spanclass="lineno"> 401</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_invalid_composition_error.html">exceptions::InvalidCompositionError</a>(<spanclass="stringliteral">"The number of symbols and number fractions must be equal."</span>);</div>
<divclass="line"><aid="l00465"name="l00465"></a><spanclass="lineno"> 465</span><spanclass="comment">// Recalculate fractions vector after normalization for validation</span></div>
<divclass="line"><aid="l00475"name="l00475"></a><spanclass="lineno"> 475</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition is invalid after mass frac finalization (Total mass {})."</span>, sum);</div>
<divclass="line"><aid="l00501"name="l00501"></a><spanclass="lineno"> 501</span><spanclass="comment">// Recalculate fractions vector after normalization for validation</span></div>
<divclass="line"><aid="l00511"name="l00511"></a><spanclass="lineno"> 511</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition is invalid after number frac finalization (Total number frac {})."</span>, sum);</div>
<divclass="line"><aid="l00535"name="l00535"></a><spanclass="lineno"> 535</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Compositions have not both been finalized. Hint: Consider running .finalize() on both compositions before mixing."</span>);</div>
<divclass="line"><aid="l00536"name="l00536"></a><spanclass="lineno"> 536</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Compositions have not been finalized (Hint: Consider running .finalize() on both compositions before mixing)."</span>);</div>
<divclass="line"><aid="l00540"name="l00540"></a><spanclass="lineno"> 540</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Mixing fraction must be between 0 and 1. Currently it is {}."</span>, fraction);</div>
<divclass="line"><aid="l00541"name="l00541"></a><spanclass="lineno"> 541</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_invalid_composition_error.html">exceptions::InvalidCompositionError</a>(<spanclass="stringliteral">"Mixing fraction must be between 0 and 1. Currently it is "</span> + std::to_string(fraction) + <spanclass="stringliteral">"."</span>);</div>
<divclass="line"><aid="l00545"name="l00545"></a><spanclass="lineno"> 545</span><spanclass="comment">// Get the union of the two sets of symbols to ensure all species are included in the new composition.</span></div>
<divclass="line"><aid="l00555"name="l00555"></a><spanclass="lineno"> 555</span><spanclass="comment">// The mixing formula is a linear interpolation of mass fractions.</span></div>
<divclass="line"><aid="l00561"name="l00561"></a><spanclass="lineno"> 561</span> msg += <spanclass="stringliteral">"This likely indicates an issue with the input compositions not summing to 1.\n"</span>;</div>
<divclass="line"><aid="l00570"name="l00570"></a><spanclass="lineno"> 570</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00571"name="l00571"></a><spanclass="lineno"> 571</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00574"name="l00574"></a><spanclass="lineno"> 574</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Symbol {} is not in the composition."</span>, symbol);</div>
<divclass="line"><aid="l00586"name="l00586"></a><spanclass="lineno"> 586</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">exceptions::UnregisteredSymbolError</a>(<spanclass="stringliteral">"Symbol("</span> + symbol + <spanclass="stringliteral">") is not in the current composition. Current composition has symbols: "</span> + currentSymbols + <spanclass="stringliteral">"."</span>);</div>
<divclass="line"><aid="l00614"name="l00614"></a><spanclass="lineno"> 614</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00615"name="l00615"></a><spanclass="lineno"> 615</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00618"name="l00618"></a><spanclass="lineno"> 618</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Symbol {} is not in the composition."</span>, symbol);</div>
<divclass="line"><aid="l00619"name="l00619"></a><spanclass="lineno"> 619</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Symbol "</span> + symbol + <spanclass="stringliteral">" is not in the composition."</span>);</div>
<divclass="line"><aid="l00645"name="l00645"></a><spanclass="lineno"> 645</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00646"name="l00646"></a><spanclass="lineno"> 646</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00649"name="l00649"></a><spanclass="lineno"> 649</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Symbol {} is not in the composition."</span>, symbol);</div>
<divclass="line"><aid="l00650"name="l00650"></a><spanclass="lineno"> 650</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">exceptions::UnregisteredSymbolError</a>(<spanclass="stringliteral">"Symbol "</span> + symbol + <spanclass="stringliteral">" is not in the composition."</span>);</div>
<divclass="line"><aid="l00666"name="l00666"></a><spanclass="lineno"> 666</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00667"name="l00667"></a><spanclass="lineno"> 667</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00670"name="l00670"></a><spanclass="lineno"> 670</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Symbol {} is not in the composition."</span>, symbol);</div>
<divclass="line"><aid="l00671"name="l00671"></a><spanclass="lineno"> 671</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">exceptions::UnregisteredSymbolError</a>(<spanclass="stringliteral">"Symbol "</span> + symbol + <spanclass="stringliteral">" is not in the composition."</span>);</div>
<divclass="line"><aid="l00684"name="l00684"></a><spanclass="lineno"> 684</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00685"name="l00685"></a><spanclass="lineno"> 685</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00692"name="l00692"></a><spanclass="lineno"> 692</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00693"name="l00693"></a><spanclass="lineno"> 693</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00700"name="l00700"></a><spanclass="lineno"> 700</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition must be finalized before getting the mean atomic mass number. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00701"name="l00701"></a><spanclass="lineno"> 701</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition not finalized. Cannot retrieve mean atomic mass number. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00718"name="l00718"></a><spanclass="lineno"> 718</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition must be finalized before getting the electron abundance. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00719"name="l00719"></a><spanclass="lineno"> 719</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition not finalized. Cannot retrieve electron abundance. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00747"name="l00747"></a><spanclass="lineno"> 747</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Symbol {} is not in the composition."</span>, symbol);</div>
<divclass="line"><aid="l00748"name="l00748"></a><spanclass="lineno"> 748</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">exceptions::UnregisteredSymbolError</a>(<spanclass="stringliteral">"Symbol "</span> + symbol + <spanclass="stringliteral">" is not in the composition."</span>);</div>
<divclass="line"><aid="l00755"name="l00755"></a><spanclass="lineno"> 755</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Subset composition is invalid. (Unable to finalize with normalization)."</span>);</div>
<divclass="line"><aid="l00756"name="l00756"></a><spanclass="lineno"> 756</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_failed_to_finalize_composition_error.html">exceptions::FailedToFinalizeCompositionError</a>(<spanclass="stringliteral">"Subset composition is invalid. (Unable to finalize with normalization)."</span>);</div>
<divclass="line"><aid="l00766"name="l00766"></a><spanclass="lineno"> 766</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Mode cannot be set unless composition is finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00767"name="l00767"></a><spanclass="lineno"> 767</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Mode cannot be set unless composition is finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00778"name="l00778"></a><spanclass="lineno"> 778</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition mode could not be set due to some unknown error."</span>);</div>
<divclass="line"><aid="l00779"name="l00779"></a><spanclass="lineno"> 779</span><spanclass="keywordflow">throw</span> std::runtime_error(<spanclass="stringliteral">"Composition mode could not be set due to an unknown error."</span>);</div>
<divclass="line"><aid="l00789"name="l00789"></a><spanclass="lineno"> 789</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00790"name="l00790"></a><spanclass="lineno"> 790</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00793"name="l00793"></a><spanclass="lineno"> 793</span><spanclass="keywordflow">return</span><aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#a02cd9d9608da082a200fdfa86d14bf5d">m_cache</a>.canonicalComp.value(); <spanclass="comment">// Short circuit if we have cached the canonical composition</span></div>
<divclass="line"><aid="l00819"name="l00819"></a><spanclass="lineno"> 819</span><spanclass="keywordflow">continue</span>; <spanclass="comment">// Skip canonical H and He symbols</span></div>
<divclass="line"><aid="l00829"name="l00829"></a><spanclass="lineno"> 829</span> LOG_WARNING(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Validation composition Z (X-Y = {}) is different than canonical composition Z ({}) (∑a_i where a_i != H/He)."</span>, Z, canonicalComposition.<aclass="code hl_variable"href="structfourdst_1_1composition_1_1_canonical_composition.html#ae1981f5ddd36abd17a4a69fa1f43de18">Z</a>);</div>
<divclass="line"><aid="l00832"name="l00832"></a><spanclass="lineno"> 832</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Validation composition Z (X-Y = {}) is different than canonical composition Z ({}) (∑a_i where a_i != H/He)."</span>, Z, canonicalComposition.<aclass="code hl_variable"href="structfourdst_1_1composition_1_1_canonical_composition.html#ae1981f5ddd36abd17a4a69fa1f43de18">Z</a>);</div>
<divclass="line"><aid="l00833"name="l00833"></a><spanclass="lineno"> 833</span><spanclass="keywordflow">throw</span> std::runtime_error(<spanclass="stringliteral">"Validation composition Z (X-Y = "</span> + std::to_string(Z) + <spanclass="stringliteral">") is different than canonical composition Z ("</span> + std::to_string(canonicalComposition.<aclass="code hl_variable"href="structfourdst_1_1composition_1_1_canonical_composition.html#ae1981f5ddd36abd17a4a69fa1f43de18">Z</a>) + <spanclass="stringliteral">") (∑a_i where a_i != H/He)."</span>);</div>
<divclass="line"><aid="l00842"name="l00842"></a><spanclass="lineno"> 842</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00843"name="l00843"></a><spanclass="lineno"> 843</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00846"name="l00846"></a><spanclass="lineno"> 846</span><spanclass="keywordflow">return</span><aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#a02cd9d9608da082a200fdfa86d14bf5d">m_cache</a>.massFractions.value(); <spanclass="comment">// Short circuit if we have cached the mass fractions</span></div>
<divclass="line"><aid="l00868"name="l00868"></a><spanclass="lineno"> 868</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00869"name="l00869"></a><spanclass="lineno"> 869</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00872"name="l00872"></a><spanclass="lineno"> 872</span><spanclass="keywordflow">return</span><aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#a02cd9d9608da082a200fdfa86d14bf5d">m_cache</a>.numberFractions.value(); <spanclass="comment">// Short circuit if we have cached the number fractions</span></div>
<divclass="line"><aid="l00893"name="l00893"></a><spanclass="lineno"> 893</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00894"name="l00894"></a><spanclass="lineno"> 894</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00897"name="l00897"></a><spanclass="lineno"> 897</span><spanclass="keywordflow">return</span><aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#a02cd9d9608da082a200fdfa86d14bf5d">m_cache</a>.molarAbundances.value(); <spanclass="comment">// Short circuit if we have cached the molar abundances</span></div>
<divclass="line"><aid="l00921"name="l00921"></a><spanclass="lineno"> 921</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00922"name="l00922"></a><spanclass="lineno"> 922</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00925"name="l00925"></a><spanclass="lineno"> 925</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Symbol {} is not in the composition."</span>, symbol);</div>
<divclass="line"><aid="l00926"name="l00926"></a><spanclass="lineno"> 926</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">exceptions::UnregisteredSymbolError</a>(<spanclass="stringliteral">"Symbol "</span> + symbol + <spanclass="stringliteral">" is not in the composition."</span>);</div>
<divclass="line"><aid="l00959"name="l00959"></a><spanclass="lineno"> 959</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00960"name="l00960"></a><spanclass="lineno"> 960</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00963"name="l00963"></a><spanclass="lineno"> 963</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Species {} is not in the composition."</span>, species.<aclass="code hl_function"href="structfourdst_1_1atomic_1_1_species.html#a1fcc01fc978b34ba2531117f10be6741">name</a>());</div>
<divclass="line"><aid="l00964"name="l00964"></a><spanclass="lineno"> 964</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">exceptions::UnregisteredSymbolError</a>(<spanclass="stringliteral">"Species "</span> + std::string(species.<aclass="code hl_function"href="structfourdst_1_1atomic_1_1_species.html#a1fcc01fc978b34ba2531117f10be6741">name</a>()) + <spanclass="stringliteral">" is not in the composition."</span>);</div>
<divclass="line"><aid="l00997"name="l00997"></a><spanclass="lineno"> 997</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l00998"name="l00998"></a><spanclass="lineno"> 998</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l01001"name="l01001"></a><spanclass="lineno"> 1001</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Index {} is out of bounds for composition of size {}."</span>, index, <aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#aa7f2753b10e85ae3bbf0c3d600a973db">m_compositions</a>.size());</div>
<divclass="line"><aid="l01002"name="l01002"></a><spanclass="lineno"> 1002</span><spanclass="keywordflow">throw</span> std::out_of_range(<spanclass="stringliteral">"Index "</span> + std::to_string(index) + <spanclass="stringliteral">" is out of bounds for composition of size "</span> + std::to_string(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#aa7f2753b10e85ae3bbf0c3d600a973db">m_compositions</a>.size()) + <spanclass="stringliteral">"."</span>);</div>
<divclass="line"><aid="l01041"name="l01041"></a><spanclass="lineno"> 1041</span><spanclass="comment">// Check if the isotope's symbol is in the composition</span></div>
<divclass="line"><aid="l01043"name="l01043"></a><spanclass="lineno"> 1043</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l01044"name="l01044"></a><spanclass="lineno"> 1044</span><spanclass="keywordflow">throw</span><aclass="code hl_class"href="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">exceptions::CompositionNotFinalizedError</a>(<spanclass="stringliteral">"Composition has not been finalized. Hint: Consider running .finalize()."</span>);</div>
<divclass="line"><aid="l01064"name="l01064"></a><spanclass="lineno"> 1064</span> os <<<spanclass="stringliteral">"Global Composition: \n"</span>;</div>
<divclass="line"><aid="l01065"name="l01065"></a><spanclass="lineno"> 1065</span> os <<<spanclass="stringliteral">"\tSpecific Number Density: "</span><< comp.<aclass="code hl_variable"href="structfourdst_1_1composition_1_1_global_composition.html#a0df6ecfe28d13cbffd0abcbfec9aee41">specificNumberDensity</a><<<spanclass="stringliteral">"\n"</span>;</div>
<divclass="line"><aid="l01066"name="l01066"></a><spanclass="lineno"> 1066</span> os <<<spanclass="stringliteral">"\tMean Particle Mass: "</span><< comp.<aclass="code hl_variable"href="structfourdst_1_1composition_1_1_global_composition.html#a9c35810d965841a755da9ce4644a2f1b">meanParticleMass</a><<<spanclass="stringliteral">"\n"</span>;</div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a02cd9d9608da082a200fdfa86d14bf5d"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a02cd9d9608da082a200fdfa86d14bf5d">fourdst::composition::Composition::m_cache</a></div><divclass="ttdeci">CompositionCache m_cache</div><divclass="ttdoc">Cache for computed properties to avoid redundant calculations.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00297">composition.h:297</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a0af981ed1074b26c237cf6cf35f82c9e"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a0af981ed1074b26c237cf6cf35f82c9e">fourdst::composition::Composition::setCompositionMode</a></div><divclass="ttdeci">void setCompositionMode(bool massFracMode)</div><divclass="ttdoc">Sets the composition mode (mass fraction vs. number fraction).</div><divclass="ttdef"><b>Definition</b><ahref="#l00762">composition.cpp:762</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a0d94f62402bb90b5d12679faeaa8c5d7"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a0d94f62402bb90b5d12679faeaa8c5d7">fourdst::composition::Composition::getSpeciesIndex</a></div><divclass="ttdeci">size_t getSpeciesIndex(const std::string &symbol) const override</div><divclass="ttdoc">get the index in the sorted vector representation for a given symbol</div><divclass="ttdef"><b>Definition</b><ahref="#l00917">composition.cpp:917</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a1138c86f7ccd39594601c2ec63ad89e9"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a1138c86f7ccd39594601c2ec63ad89e9">fourdst::composition::Composition::getComposition</a></div><divclass="ttdeci">std::pair< std::unordered_map< std::string, CompositionEntry >, GlobalComposition > getComposition() const</div><divclass="ttdoc">Gets all composition entries and the global composition data.</div><divclass="ttdef"><b>Definition</b><ahref="#l00682">composition.cpp:682</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a17635cd21744c7cf86cb1eb75152c816"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a17635cd21744c7cf86cb1eb75152c816">fourdst::composition::Composition::subset</a></div><divclass="ttdeci">Composition subset(const std::vector< std::string >&symbols, const std::string &method="norm") const</div><divclass="ttdoc">Creates a new Composition object containing a subset of species from this one.</div><divclass="ttdef"><b>Definition</b><ahref="#l00734">composition.cpp:734</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a1bc2e64f87c12befdc2bc767e7405661"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a1bc2e64f87c12befdc2bc767e7405661">fourdst::composition::Composition::registerSymbol</a></div><divclass="ttdeci">void registerSymbol(const std::string &symbol, bool massFracMode=true)</div><divclass="ttdoc">Registers a new symbol for inclusion in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00255">composition.cpp:255</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a24a3bdeb8e8e55b54ecdee6dcb0d9561"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a24a3bdeb8e8e55b54ecdee6dcb0d9561">fourdst::composition::Composition::operator+</a></div><divclass="ttdeci">Composition operator+(const Composition &other) const</div><divclass="ttdoc">Overloads the + operator to mix two compositions with a 50/50 fraction.</div><divclass="ttdef"><b>Definition</b><ahref="#l01054">composition.cpp:1054</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a3aead72892606725a4149a5f65bd31ec"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a3aead72892606725a4149a5f65bd31ec">fourdst::composition::Composition::mix</a></div><divclass="ttdeci">Composition mix(const Composition &other, double fraction) const</div><divclass="ttdoc">Mixes this composition with another to produce a new composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00533">composition.cpp:533</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a3f10f38878ba4be121d6d77a8b1f4d7a"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a3f10f38878ba4be121d6d77a8b1f4d7a">fourdst::composition::Composition::getRegisteredSymbols</a></div><divclass="ttdeci">std::set< std::string > getRegisteredSymbols() const override</div><divclass="ttdoc">Gets the registered symbols.</div><divclass="ttdef"><b>Definition</b><ahref="#l00309">composition.cpp:309</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a461ab4e9cb5975cf865db5f16f03ddfe"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a461ab4e9cb5975cf865db5f16f03ddfe">fourdst::composition::Composition::finalizeNumberFracMode</a></div><divclass="ttdeci">bool finalizeNumberFracMode(bool norm)</div><divclass="ttdoc">Finalizes the composition in number fraction mode.</div><divclass="ttdef"><b>Definition</b><ahref="#l00489">composition.cpp:489</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a493224656aa3ade68389250720ef09af"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a493224656aa3ade68389250720ef09af">fourdst::composition::Composition::setMassFraction</a></div><divclass="ttdeci">double setMassFraction(const std::string &symbol, const double &mass_fraction)</div><divclass="ttdoc">Sets the mass fraction for a given symbol.</div><divclass="ttdef"><b>Definition</b><ahref="#l00343">composition.cpp:343</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a49d2eba540f28324c6b7145a5b6cabfd"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a49d2eba540f28324c6b7145a5b6cabfd">fourdst::composition::Composition::getNumberFractionVector</a></div><divclass="ttdeci">std::vector< double > getNumberFractionVector() const override</div><divclass="ttdoc">Get a uniform vector representation of the number fractions stored in the composition object sorted s...</div><divclass="ttdef"><b>Definition</b><ahref="#l00866">composition.cpp:866</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a4a36c8d22ce61023e7bea1d9417577d4"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a4a36c8d22ce61023e7bea1d9417577d4">fourdst::composition::Composition::m_meanParticleMass</a></div><divclass="ttdeci">double m_meanParticleMass</div><divclass="ttdoc">The mean particle mass of the composition (\sum_{i} \frac{n_i}{m_i}. where n_i is the number fraction...</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00291">composition.h:291</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a4ce00f73cc133bb1bac2b030b93ab480"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a4ce00f73cc133bb1bac2b030b93ab480">fourdst::composition::Composition::registerSpecies</a></div><divclass="ttdeci">void registerSpecies(const fourdst::atomic::Species &species, bool massFracMode=true)</div><divclass="ttdoc">Registers a new species by extracting its symbol.</div><divclass="ttdef"><b>Definition</b><ahref="#l00293">composition.cpp:293</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a4ec1e23cfecef764cb831171fed62fc2"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a4ec1e23cfecef764cb831171fed62fc2">fourdst::composition::Composition::operator=</a></div><divclass="ttdeci">Composition & operator=(Composition const &other)</div><divclass="ttdoc">Assignment operator.</div><divclass="ttdef"><b>Definition</b><ahref="#l00243">composition.cpp:243</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a55dfadad6cf5fb249356edad1733a813"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a55dfadad6cf5fb249356edad1733a813">fourdst::composition::Composition::hasSpecies</a></div><divclass="ttdeci">bool hasSpecies(const fourdst::atomic::Species &species) const override</div><divclass="ttdoc">Checks if a species is registered in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l01029">composition.cpp:1029</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a62dcfcf8f824d6af7903a9a9c3d5721e"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a62dcfcf8f824d6af7903a9a9c3d5721e">fourdst::composition::Composition::getElectronAbundance</a></div><divclass="ttdeci">double getElectronAbundance() const override</div><divclass="ttdoc">Compute the electron abundance of the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00716">composition.cpp:716</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a671f1ee8be00f4ff8c1d94fabb382380"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a671f1ee8be00f4ff8c1d94fabb382380">fourdst::composition::Composition::m_massFracMode</a></div><divclass="ttdeci">bool m_massFracMode</div><divclass="ttdoc">True if mass fraction mode, false if number fraction mode.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00292">composition.h:292</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a72d063a74a9d2197065884a2cea57a14"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a72d063a74a9d2197065884a2cea57a14">fourdst::composition::Composition::finalize</a></div><divclass="ttdeci">bool finalize(bool norm=false)</div><divclass="ttdoc">Finalizes the composition, making it ready for querying.</div><divclass="ttdef"><b>Definition</b><ahref="#l00445">composition.cpp:445</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a796386824d1358527fed7c6b537935d8"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a796386824d1358527fed7c6b537935d8">fourdst::composition::Composition::getMeanParticleMass</a></div><divclass="ttdeci">double getMeanParticleMass() const override</div><divclass="ttdoc">Compute the mean particle mass of the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00690">composition.cpp:690</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a7d4d748f3ee25e68751fb143717ed080"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a7d4d748f3ee25e68751fb143717ed080">fourdst::composition::Composition::setNumberFraction</a></div><divclass="ttdeci">double setNumberFraction(const std::string &symbol, const double &number_fraction)</div><divclass="ttdoc">Sets the number fraction for a given symbol.</div><divclass="ttdef"><b>Definition</b><ahref="#l00374">composition.cpp:374</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a7efe2cd3a69b743bf2086941b6dfd965"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a7efe2cd3a69b743bf2086941b6dfd965">fourdst::composition::Composition::contains</a></div><divclass="ttdeci">bool contains(const atomic::Species &isotope) const override</div><divclass="ttdoc">Checks if a given isotope is present in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l01038">composition.cpp:1038</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a85169b763138ab72047e43e07af978fb"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a85169b763138ab72047e43e07af978fb">fourdst::composition::Composition::getMassFractionVector</a></div><divclass="ttdeci">std::vector< double > getMassFractionVector() const override</div><divclass="ttdoc">Get a uniform vector representation of the mass fraction stored in the composition object sorted such...</div><divclass="ttdef"><b>Definition</b><ahref="#l00840">composition.cpp:840</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a86982685c34db4a8f079ddafc25c594e"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a86982685c34db4a8f079ddafc25c594e">fourdst::composition::Composition::validateComposition</a></div><divclass="ttdeci">void validateComposition(const std::vector< double >&fractions) const</div><divclass="ttdoc">Validates the given fractions, throwing an exception on failure.</div><divclass="ttdef"><b>Definition</b><ahref="#l00327">composition.cpp:327</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a869dbae3db9d09c57b2df56a813a55fb"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a869dbae3db9d09c57b2df56a813a55fb">fourdst::composition::Composition::finalizeMassFracMode</a></div><divclass="ttdeci">bool finalizeMassFracMode(bool norm)</div><divclass="ttdoc">Finalizes the composition in mass fraction mode.</div><divclass="ttdef"><b>Definition</b><ahref="#l00453">composition.cpp:453</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a8fdac26e6298008aaeaa5b15f7fe244f"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a8fdac26e6298008aaeaa5b15f7fe244f">fourdst::composition::Composition::isValidSymbol</a></div><divclass="ttdeci">static bool isValidSymbol(const std::string &symbol)</div><divclass="ttdoc">Checks if the given symbol is valid by checking against the global species database.</div><divclass="ttdef"><b>Definition</b><ahref="#l00321">composition.cpp:321</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_aa00cbc0933d8a22bb900ac21a338e5ac"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#aa00cbc0933d8a22bb900ac21a338e5ac">fourdst::composition::Composition::m_finalized</a></div><divclass="ttdeci">bool m_finalized</div><divclass="ttdoc">True if the composition is finalized.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00289">composition.h:289</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_aae07019ab6e02394e6ea353e0b98a417"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#aae07019ab6e02394e6ea353e0b98a417">fourdst::composition::Composition::getMassFraction</a></div><divclass="ttdeci">std::unordered_map< std::string, double > getMassFraction() const override</div><divclass="ttdoc">Gets the mass fractions of all species in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00601">composition.cpp:601</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_abed665c07c42b40682da453576621399"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#abed665c07c42b40682da453576621399">fourdst::composition::Composition::getMolarAbundanceVector</a></div><divclass="ttdeci">std::vector< double > getMolarAbundanceVector() const override</div><divclass="ttdoc">Get a uniform vector representation of the molar abundances stored in the composition object sorted s...</div><divclass="ttdef"><b>Definition</b><ahref="#l00891">composition.cpp:891</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_ac01ae1967c266d8187bc6e104c8a0d19"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#ac01ae1967c266d8187bc6e104c8a0d19">fourdst::composition::Composition::hasSymbol</a></div><divclass="ttdeci">bool hasSymbol(const std::string &symbol) const override</div><divclass="ttdoc">Checks if a symbol is registered in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l01023">composition.cpp:1023</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_ac75dbc8377556c835455991c7c7fe206"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#ac75dbc8377556c835455991c7c7fe206">fourdst::composition::Composition::getCanonicalComposition</a></div><divclass="ttdeci">CanonicalComposition getCanonicalComposition(bool harsh=false) const</div><divclass="ttdoc">Gets the current canonical composition (X, Y, Z).</div><divclass="ttdef"><b>Definition</b><ahref="#l00785">composition.cpp:785</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_add67a92d73e3a57a2bbdb52bc9ca3bfe"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#add67a92d73e3a57a2bbdb52bc9ca3bfe">fourdst::composition::Composition::getMolarAbundance</a></div><divclass="ttdeci">double getMolarAbundance(const std::string &symbol) const override</div><divclass="ttdoc">Gets the molar abundance (X_i / A_i) for a given symbol.</div><divclass="ttdef"><b>Definition</b><ahref="#l00641">composition.cpp:641</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_addae4484da7d5072ab66a721dbe04ced"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#addae4484da7d5072ab66a721dbe04ced">fourdst::composition::Composition::m_specificNumberDensity</a></div><divclass="ttdeci">double m_specificNumberDensity</div><divclass="ttdoc">The specific number density of the composition (\sum_{i} X_i m_i. Where X_i is the number fraction of...</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00290">composition.h:290</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_addf03ba8b988970d341884d487aa94d5"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#addf03ba8b988970d341884d487aa94d5">fourdst::composition::Composition::isValidComposition</a></div><divclass="ttdeci">bool isValidComposition(const std::vector< double >&fractions) const</div><divclass="ttdoc">Checks if the given fractions are valid (sum to ~1.0).</div><divclass="ttdef"><b>Definition</b><ahref="#l00334">composition.cpp:334</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_ae46fb8c3020dadd69080a7acd2054ea1"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#ae46fb8c3020dadd69080a7acd2054ea1">fourdst::composition::Composition::getNumberFraction</a></div><divclass="ttdeci">std::unordered_map< std::string, double > getNumberFraction() const override</div><divclass="ttdoc">Gets the number fractions of all species in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00633">composition.cpp:633</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_ae4f854ded38f5e6fcd157a74a57cbf0c"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#ae4f854ded38f5e6fcd157a74a57cbf0c">fourdst::composition::Composition::getSpeciesAtIndex</a></div><divclass="ttdeci">atomic::Species getSpeciesAtIndex(size_t index) const override</div><divclass="ttdoc">Get the species at a given index in the sorted vector representation.</div><divclass="ttdef"><b>Definition</b><ahref="#l00993">composition.cpp:993</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_af61ebe73a8b5926eb23037bb078fa87a"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#af61ebe73a8b5926eb23037bb078fa87a">fourdst::composition::Composition::getRegisteredSpecies</a></div><divclass="ttdeci">std::set< fourdst::atomic::Species > getRegisteredSpecies() const override</div><divclass="ttdoc">Get a set of all species that are registered in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00313">composition.cpp:313</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_af7dd8f7d69727acfacf1bf58c4083a27"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#af7dd8f7d69727acfacf1bf58c4083a27">fourdst::composition::Composition::getMeanAtomicNumber</a></div><divclass="ttdeci">double getMeanAtomicNumber() const override</div><divclass="ttdoc">Compute the mean atomic number of the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00698">composition.cpp:698</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1exceptions_1_1_composition_mode_error_html"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1exceptions_1_1_composition_mode_error.html">fourdst::composition::exceptions::CompositionModeError</a></div><divclass="ttdoc">Exception thrown due to a conflict in composition modes at the entry level.</div><divclass="ttdef"><b>Definition</b><ahref="exceptions__composition_8h_source.html#l00145">exceptions_composition.h:145</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error_html"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1exceptions_1_1_composition_not_finalized_error.html">fourdst::composition::exceptions::CompositionNotFinalizedError</a></div><divclass="ttdoc">Exception thrown when an operation is attempted on a composition that has not been finalized.</div><divclass="ttdef"><b>Definition</b><ahref="exceptions__composition_8h_source.html#l00074">exceptions_composition.h:74</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1exceptions_1_1_entry_already_initialized_error_html"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1exceptions_1_1_entry_already_initialized_error.html">fourdst::composition::exceptions::EntryAlreadyInitializedError</a></div><divclass="ttdoc">Exception thrown when attempting to initialize a composition entry that has already been initialized.</div><divclass="ttdef"><b>Definition</b><ahref="exceptions__composition_8h_source.html#l00135">exceptions_composition.h:135</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1exceptions_1_1_failed_to_finalize_composition_error_html"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1exceptions_1_1_failed_to_finalize_composition_error.html">fourdst::composition::exceptions::FailedToFinalizeCompositionError</a></div><divclass="ttdoc">Exception thrown when the finalization process of a composition fails.</div><divclass="ttdef"><b>Definition</b><ahref="exceptions__composition_8h_source.html#l00119">exceptions_composition.h:119</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1exceptions_1_1_invalid_composition_error_html"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1exceptions_1_1_invalid_composition_error.html">fourdst::composition::exceptions::InvalidCompositionError</a></div><divclass="ttdoc">Exception thrown when a composition is in an invalid or inconsistent state.</div><divclass="ttdef"><b>Definition</b><ahref="exceptions__composition_8h_source.html#l00082">exceptions_composition.h:82</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1exceptions_1_1_invalid_mixing_mode_html"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1exceptions_1_1_invalid_mixing_mode.html">fourdst::composition::exceptions::InvalidMixingMode</a></div><divclass="ttdoc">Exception thrown for an invalid or unsupported mixing mode.</div><divclass="ttdef"><b>Definition</b><ahref="exceptions__composition_8h_source.html#l00093">exceptions_composition.h:93</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1exceptions_1_1_invalid_species_symbol_error_html"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1exceptions_1_1_invalid_species_symbol_error.html">fourdst::composition::exceptions::InvalidSpeciesSymbolError</a></div><divclass="ttdoc">Exception thrown for an invalid chemical species symbol in a composition entry.</div><divclass="ttdef"><b>Definition</b><ahref="exceptions__composition_8h_source.html#l00127">exceptions_composition.h:127</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1exceptions_1_1_invalid_symbol_error_html"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1exceptions_1_1_invalid_symbol_error.html">fourdst::composition::exceptions::InvalidSymbolError</a></div><divclass="ttdoc">Exception thrown when a symbol used in a composition is invalid.</div><divclass="ttdef"><b>Definition</b><ahref="exceptions__composition_8h_source.html#l00101">exceptions_composition.h:101</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error_html"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error.html">fourdst::composition::exceptions::UnregisteredSymbolError</a></div><divclass="ttdoc">Exception thrown when a symbol is used that has not been registered.</div><divclass="ttdef"><b>Definition</b><ahref="exceptions__composition_8h_source.html#l00111">exceptions_composition.h:111</a></div></div>
<divclass="ttc"id="anamespacefourdst_1_1atomic_html"><divclass="ttname"><ahref="namespacefourdst_1_1atomic.html">fourdst::atomic</a></div><divclass="ttdoc">Contains classes and functions related to atomic data, such as properties of atomic species.</div></div>
<divclass="ttc"id="anamespacefourdst_1_1atomic_html_a3f619cc8f8b2cd718a4082c6adb0de90"><divclass="ttname"><ahref="namespacefourdst_1_1atomic.html#a3f619cc8f8b2cd718a4082c6adb0de90">fourdst::atomic::species</a></div><divclass="ttdeci">static const std::unordered_map< std::string, const Species &> species</div><divclass="ttdoc">Map of species names to their corresponding Species objects.</div><divclass="ttdef"><b>Definition</b><ahref="species_8h_source.html#l03579">species.h:3579</a></div></div>
<divclass="ttc"id="astructfourdst_1_1atomic_1_1_species_html"><divclass="ttname"><ahref="structfourdst_1_1atomic_1_1_species.html">fourdst::atomic::Species</a></div><divclass="ttdoc">Represents an atomic species (isotope) with its fundamental physical properties.</div><divclass="ttdef"><b>Definition</b><ahref="atomic_species_8h_source.html#l00051">atomicSpecies.h:51</a></div></div>
<divclass="ttc"id="astructfourdst_1_1atomic_1_1_species_html_a1fcc01fc978b34ba2531117f10be6741"><divclass="ttname"><ahref="structfourdst_1_1atomic_1_1_species.html#a1fcc01fc978b34ba2531117f10be6741">fourdst::atomic::Species::name</a></div><divclass="ttdeci">std::string_view name() const</div><divclass="ttdoc">Gets the name of the species.</div><divclass="ttdef"><b>Definition</b><ahref="atomic_species_8h_source.html#l00213">atomicSpecies.h:213</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_canonical_composition_html"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_canonical_composition.html">fourdst::composition::CanonicalComposition</a></div><divclass="ttdoc">Represents the canonical (X, Y, Z) composition of stellar material.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00044">composition.h:44</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_canonical_composition_html_a93927bfccc5d2b3906565d092ed4f7f4"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_canonical_composition.html#a93927bfccc5d2b3906565d092ed4f7f4">fourdst::composition::CanonicalComposition::Y</a></div><divclass="ttdeci">double Y</div><divclass="ttdoc">Mass fraction of Helium.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00046">composition.h:46</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_canonical_composition_html_abe5b01574242f8eaabd00c3d653291f7"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_canonical_composition.html#abe5b01574242f8eaabd00c3d653291f7">fourdst::composition::CanonicalComposition::X</a></div><divclass="ttdeci">double X</div><divclass="ttdoc">Mass fraction of Hydrogen.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00045">composition.h:45</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_canonical_composition_html_ae1981f5ddd36abd17a4a69fa1f43de18"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_canonical_composition.html#ae1981f5ddd36abd17a4a69fa1f43de18">fourdst::composition::CanonicalComposition::Z</a></div><divclass="ttdeci">double Z</div><divclass="ttdoc">Mass fraction of Metals.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00047">composition.h:47</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html">fourdst::composition::CompositionEntry</a></div><divclass="ttdoc">Represents a single entry (an isotope) within a composition.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00084">composition.h:84</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a00332551f5b2f0d7f10b12a091e21fa8"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a00332551f5b2f0d7f10b12a091e21fa8">fourdst::composition::CompositionEntry::setNumberFracMode</a></div><divclass="ttdeci">bool setNumberFracMode(double totalMolesPerMass)</div><divclass="ttdoc">Switches the mode to number fraction mode.</div><divclass="ttdef"><b>Definition</b><ahref="#l00171">composition.cpp:171</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a14f12b8b0178df2e32e2023bd4564ddc"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a14f12b8b0178df2e32e2023bd4564ddc">fourdst::composition::CompositionEntry::getMassFracMode</a></div><divclass="ttdeci">bool getMassFracMode() const</div><divclass="ttdoc">Gets the mode of the composition entry.</div><divclass="ttdef"><b>Definition</b><ahref="#l00183">composition.cpp:183</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a1cccb94c150dd1dcde860f55fbeaf2bd"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a1cccb94c150dd1dcde860f55fbeaf2bd">fourdst::composition::CompositionEntry::CompositionEntry</a></div><divclass="ttdeci">CompositionEntry()</div><divclass="ttdoc">Default constructor. Initializes a default entry (H-1), but in an uninitialized state.</div><divclass="ttdef"><b>Definition</b><ahref="#l00069">composition.cpp:69</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a1e860519bea86793413ed67c76d18c8b"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a1e860519bea86793413ed67c76d18c8b">fourdst::composition::CompositionEntry::m_massFracMode</a></div><divclass="ttdeci">bool m_massFracMode</div><divclass="ttdoc">The mode of the composition entry. True if mass fraction, false if number fraction.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00087">composition.h:87</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a2d55492d285068d4a64db5602dfb1c78"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a2d55492d285068d4a64db5602dfb1c78">fourdst::composition::CompositionEntry::number_fraction</a></div><divclass="ttdeci">double number_fraction() const</div><divclass="ttdoc">Gets the number fraction of the species.</div><divclass="ttdef"><b>Definition</b><ahref="#l00110">composition.cpp:110</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a391e899874cd7ef299a3ae1f64c016d2"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a391e899874cd7ef299a3ae1f64c016d2">fourdst::composition::CompositionEntry::m_initialized</a></div><divclass="ttdeci">bool m_initialized</div><divclass="ttdoc">True if the composition entry has been initialized with a valid species.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00096">composition.h:96</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a3b056b6b923016d271f034333c96d039"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a3b056b6b923016d271f034333c96d039">fourdst::composition::CompositionEntry::m_cachedNumberFraction</a></div><divclass="ttdeci">double m_cachedNumberFraction</div><divclass="ttdoc">Cached number fraction for conversions when in mass fraction mode.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00093">composition.h:93</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a3fb3f63a4e5675c6fefb662a8e3e7aa3"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a3fb3f63a4e5675c6fefb662a8e3e7aa3">fourdst::composition::CompositionEntry::setMassFracMode</a></div><divclass="ttdeci">bool setMassFracMode(double meanMolarMass)</div><divclass="ttdoc">Switches the mode to mass fraction mode.</div><divclass="ttdef"><b>Definition</b><ahref="#l00159">composition.cpp:159</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a4d6df43e098e7e2e2d94ff7fb76cb4c2"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a4d6df43e098e7e2e2d94ff7fb76cb4c2">fourdst::composition::CompositionEntry::setMassFraction</a></div><divclass="ttdeci">void setMassFraction(double mass_fraction)</div><divclass="ttdoc">Sets the mass fraction of the species.</div><divclass="ttdef"><b>Definition</b><ahref="#l00134">composition.cpp:134</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a50d18b4c27611fa9314dd756af54c2f0"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a50d18b4c27611fa9314dd756af54c2f0">fourdst::composition::CompositionEntry::symbol</a></div><divclass="ttdeci">std::string symbol() const</div><divclass="ttdoc">Gets the chemical symbol of the species.</div><divclass="ttdef"><b>Definition</b><ahref="#l00098">composition.cpp:98</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a5885a0e33687bceb15b225a00163e9d3"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a5885a0e33687bceb15b225a00163e9d3">fourdst::composition::CompositionEntry::setSpecies</a></div><divclass="ttdeci">void setSpecies(const std::string &symbol)</div><divclass="ttdoc">Sets the species for the composition entry. This can only be done once.</div><divclass="ttdef"><b>Definition</b><ahref="#l00086">composition.cpp:86</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a66cb086719d7f654869bd7b0cee87ffc"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a66cb086719d7f654869bd7b0cee87ffc">fourdst::composition::CompositionEntry::mass_fraction</a></div><divclass="ttdeci">double mass_fraction() const</div><divclass="ttdoc">Gets the mass fraction of the species.</div><divclass="ttdef"><b>Definition</b><ahref="#l00102">composition.cpp:102</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a9ec47cf4b3399128d3836c1b24b031b0"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a9ec47cf4b3399128d3836c1b24b031b0">fourdst::composition::CompositionEntry::setNumberFraction</a></div><divclass="ttdeci">void setNumberFraction(double number_fraction)</div><divclass="ttdoc">Sets the number fraction of the species.</div><divclass="ttdef"><b>Definition</b><ahref="#l00148">composition.cpp:148</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_ab6619d23e111905d1e3ab16ee822d96c"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#ab6619d23e111905d1e3ab16ee822d96c">fourdst::composition::CompositionEntry::rel_abundance</a></div><divclass="ttdeci">double rel_abundance() const</div><divclass="ttdoc">Gets the relative abundance of the species.</div><divclass="ttdef"><b>Definition</b><ahref="#l00126">composition.cpp:126</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_ac273debdba6a1b3ac0f11698c399d38e"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#ac273debdba6a1b3ac0f11698c399d38e">fourdst::composition::CompositionEntry::m_symbol</a></div><divclass="ttdeci">std::string m_symbol</div><divclass="ttdoc">The chemical symbol of the species (e.g., "H-1", "Fe-56").</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00085">composition.h:85</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_af49920b1168be92d517aea03a308fee1"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#af49920b1168be92d517aea03a308fee1">fourdst::composition::CompositionEntry::isotope</a></div><divclass="ttdeci">atomic::Species isotope() const</div><divclass="ttdoc">Gets the isotope data for the species.</div><divclass="ttdef"><b>Definition</b><ahref="#l00130">composition.cpp:130</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_global_composition_html"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_global_composition.html">fourdst::composition::GlobalComposition</a></div><divclass="ttdoc">Represents global properties of a finalized composition.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00070">composition.h:70</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_global_composition_html_a0df6ecfe28d13cbffd0abcbfec9aee41"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_global_composition.html#a0df6ecfe28d13cbffd0abcbfec9aee41">fourdst::composition::GlobalComposition::specificNumberDensity</a></div><divclass="ttdeci">double specificNumberDensity</div><divclass="ttdoc">The specific number density (moles per unit mass, sum of X_i/M_i), where X_i is mass fraction and M_i...</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00071">composition.h:71</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_global_composition_html_a9c35810d965841a755da9ce4644a2f1b"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_global_composition.html#a9c35810d965841a755da9ce4644a2f1b">fourdst::composition::GlobalComposition::meanParticleMass</a></div><divclass="ttdeci">double meanParticleMass</div><divclass="ttdoc">The mean mass per particle (inverse of specific number density). Units: g/mol.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00072">composition.h:72</a></div></div>
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.13.2 </li>