<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="l00039"name="l00039"></a><spanclass="lineno"> 39</span><spanclass="keyword">template</span><<spanclass="keyword">typename</span> A, <spanclass="keyword">typename</span> B></div>
<divclass="line"><aid="l00046"name="l00046"></a><spanclass="lineno"> 46</span> std::ranges::sort(indices, [&](<spanclass="keywordtype">size_t</span> a, <spanclass="keywordtype">size_t</span> b) {</div>
<divclass="line"><aid="l00066"name="l00066"></a><spanclass="lineno"> 66</span><aclass="code hl_variable"href="structfourdst_1_1composition_1_1_composition_entry.html#a391e899874cd7ef299a3ae1f64c016d2">m_initialized</a>(false) {} <spanclass="comment">// Note: Default entry is uninitialized, must be explicitly set.</span></div>
<divclass="line"><aid="l00099"name="l00099"></a><spanclass="lineno"> 99</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="l00108"name="l00108"></a><spanclass="lineno"> 108</span><spanclass="comment">// Convert from number fraction to mass fraction using: X_i = n_i * A_i / <A></span></div>
<divclass="line"><aid="l00109"name="l00109"></a><spanclass="lineno"> 109</span><spanclass="comment">// where m_relAbundance is n_i * A_i and meanMolarMass is <A>.</span></div>
<divclass="line"><aid="l00116"name="l00116"></a><spanclass="lineno"> 116</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="l00123"name="l00123"></a><spanclass="lineno"> 123</span><spanclass="comment">// Convert from mass fraction to number fraction using: n_i = (X_i / A_i) / sum(X_j / A_j)</span></div>
<divclass="line"><aid="l00124"name="l00124"></a><spanclass="lineno"> 124</span><spanclass="comment">// where m_relAbundance is X_i / A_i and totalMoles is sum(X_j / A_j).</span></div>
<divclass="line"><aid="l00140"name="l00140"></a><spanclass="lineno"> 140</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="l00148"name="l00148"></a><spanclass="lineno"> 148</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="l00190"name="l00190"></a><spanclass="lineno"> 190</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="l00191"name="l00191"></a><spanclass="lineno"> 191</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><spanclass="comment">// note: m_config remains bound to the same singleton, so we skip it</span></div>
<divclass="line"><aid="l00239"name="l00239"></a><spanclass="lineno"> 239</span><spanclass="comment">// If no symbols have been registered allow mode to be set</span></div>
<divclass="line"><aid="l00244"name="l00244"></a><spanclass="lineno"> 244</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. Cannot register symbol ({}) in number fraction mode."</span>, symbol);</div>
<divclass="line"><aid="l00245"name="l00245"></a><spanclass="lineno"> 245</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. Cannot register symbol ("</span> + symbol + <spanclass="stringliteral">") in number fraction mode."</span>);</div>
<divclass="line"><aid="l00300"name="l00300"></a><spanclass="lineno"> 300</span><spanclass="keywordflow">if</span> (sum < 0.999999 || sum > 1.000001) {</div>
<divclass="line"><aid="l00301"name="l00301"></a><spanclass="lineno"> 301</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="l00314"name="l00314"></a><spanclass="lineno"> 314</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="l00315"name="l00315"></a><spanclass="lineno"> 315</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="l00319"name="l00319"></a><spanclass="lineno"> 319</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="l00320"name="l00320"></a><spanclass="lineno"> 320</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="l00324"name="l00324"></a><spanclass="lineno"> 324</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="l00325"name="l00325"></a><spanclass="lineno"> 325</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 for symbol "</span> + symbol + <spanclass="stringliteral">". Currently it is "</span> + std::to_string(mass_fraction) + <spanclass="stringliteral">"."</span>);</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 number of symbols and mass fractions must be equal (currently {} symbols and {} mass fractions)."</span>, symbols.size(), mass_fractions.size());</div>
<divclass="line"><aid="l00338"name="l00338"></a><spanclass="lineno"> 338</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 (currently "</span> + std::to_string(symbols.size()) + <spanclass="stringliteral">" symbols and "</span> + std::to_string(mass_fractions.size()) + <spanclass="stringliteral">" mass fractions)."</span>);</div>
<divclass="line"><aid="l00365"name="l00365"></a><spanclass="lineno"> 365</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="l00366"name="l00366"></a><spanclass="lineno"> 366</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="l00370"name="l00370"></a><spanclass="lineno"> 370</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, should be in number fraction mode to call setNumberFraction. Hint: The mode can be switched by first finalizing and then calling setCompositionMode(false)."</span>);</div>
<divclass="line"><aid="l00371"name="l00371"></a><spanclass="lineno"> 371</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, should be in number fraction mode to call setNumberFraction. Hint: The mode can be switched by first finalizing and then calling setCompositionMode(false)."</span>);</div>
<divclass="line"><aid="l00375"name="l00375"></a><spanclass="lineno"> 375</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="l00376"name="l00376"></a><spanclass="lineno"> 376</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 for symbol "</span> + symbol + <spanclass="stringliteral">". Currently it is "</span> + std::to_string(number_fraction) + <spanclass="stringliteral">"."</span>);</div>
<divclass="line"><aid="l00388"name="l00388"></a><spanclass="lineno"> 388</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"The number of symbols and number fractions must be equal. (Currently {} symbols and {} number fractions)."</span>, symbols.size(), number_fractions.size());</div>
<divclass="line"><aid="l00389"name="l00389"></a><spanclass="lineno"> 389</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. (Currently "</span> + std::to_string(symbols.size()) + <spanclass="stringliteral">" symbols and "</span> + std::to_string(number_fractions.size()) + <spanclass="stringliteral">" number fractions)."</span>);</div>
<divclass="line"><aid="l00456"name="l00456"></a><spanclass="lineno"> 456</span><spanclass="comment">// After validation, calculate the specific number density (total moles per unit mass).</span></div>
<divclass="line"><aid="l00490"name="l00490"></a><spanclass="lineno"> 490</span><spanclass="comment">// After validation, calculate the mean particle mass.</span></div>
<divclass="line"><aid="l00500"name="l00500"></a><spanclass="lineno"> 500</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="l00501"name="l00501"></a><spanclass="lineno"> 501</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="l00505"name="l00505"></a><spanclass="lineno"> 505</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="l00506"name="l00506"></a><spanclass="lineno"> 506</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="l00510"name="l00510"></a><spanclass="lineno"> 510</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="l00520"name="l00520"></a><spanclass="lineno"> 520</span><spanclass="comment">// The mixing formula is a linear interpolation of mass fractions.</span></div>
<divclass="line"><aid="l00530"name="l00530"></a><spanclass="lineno"> 530</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="l00531"name="l00531"></a><spanclass="lineno"> 531</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="l00534"name="l00534"></a><spanclass="lineno"> 534</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="l00546"name="l00546"></a><spanclass="lineno"> 546</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="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="l00575"name="l00575"></a><spanclass="lineno"> 575</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="l00598"name="l00598"></a><spanclass="lineno"> 598</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="l00599"name="l00599"></a><spanclass="lineno"> 599</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="l00602"name="l00602"></a><spanclass="lineno"> 602</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="l00603"name="l00603"></a><spanclass="lineno"> 603</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="l00615"name="l00615"></a><spanclass="lineno"> 615</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="l00616"name="l00616"></a><spanclass="lineno"> 616</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="l00619"name="l00619"></a><spanclass="lineno"> 619</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="l00620"name="l00620"></a><spanclass="lineno"> 620</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="l00632"name="l00632"></a><spanclass="lineno"> 632</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="l00633"name="l00633"></a><spanclass="lineno"> 633</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="l00640"name="l00640"></a><spanclass="lineno"> 640</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="l00641"name="l00641"></a><spanclass="lineno"> 641</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="l00648"name="l00648"></a><spanclass="lineno"> 648</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="l00649"name="l00649"></a><spanclass="lineno"> 649</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="l00654"name="l00654"></a><spanclass="lineno"> 654</span><spanclass="comment">// Loop through all registered species in the composition.</span></div>
<divclass="line"><aid="l00677"name="l00677"></a><spanclass="lineno"> 677</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="l00678"name="l00678"></a><spanclass="lineno"> 678</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="l00687"name="l00687"></a><spanclass="lineno"> 687</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="l00688"name="l00688"></a><spanclass="lineno"> 688</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="l00696"name="l00696"></a><spanclass="lineno"> 696</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="l00697"name="l00697"></a><spanclass="lineno"> 697</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="l00708"name="l00708"></a><spanclass="lineno"> 708</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="l00709"name="l00709"></a><spanclass="lineno"> 709</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="l00717"name="l00717"></a><spanclass="lineno"> 717</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="l00718"name="l00718"></a><spanclass="lineno"> 718</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="l00743"name="l00743"></a><spanclass="lineno"> 743</span><spanclass="keywordflow">continue</span>; <spanclass="comment">// Skip canonical H and He symbols</span></div>
<divclass="line"><aid="l00752"name="l00752"></a><spanclass="lineno"> 752</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="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">"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="l00756"name="l00756"></a><spanclass="lineno"> 756</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="l00764"name="l00764"></a><spanclass="lineno"> 764</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="l00765"name="l00765"></a><spanclass="lineno"> 765</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="l00785"name="l00785"></a><spanclass="lineno"> 785</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="l00786"name="l00786"></a><spanclass="lineno"> 786</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="l00805"name="l00805"></a><spanclass="lineno"> 805</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="l00806"name="l00806"></a><spanclass="lineno"> 806</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="l00825"name="l00825"></a><spanclass="lineno"> 825</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="l00826"name="l00826"></a><spanclass="lineno"> 826</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="l00829"name="l00829"></a><spanclass="lineno"> 829</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="l00830"name="l00830"></a><spanclass="lineno"> 830</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="l00850"name="l00850"></a><spanclass="lineno"> 850</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="l00851"name="l00851"></a><spanclass="lineno"> 851</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="l00854"name="l00854"></a><spanclass="lineno"> 854</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="l00855"name="l00855"></a><spanclass="lineno"> 855</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="l00875"name="l00875"></a><spanclass="lineno"> 875</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="l00876"name="l00876"></a><spanclass="lineno"> 876</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="l00879"name="l00879"></a><spanclass="lineno"> 879</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="l00880"name="l00880"></a><spanclass="lineno"> 880</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="l00883"name="l00883"></a><spanclass="lineno"> 883</span> LOG_ERROR(<aclass="code hl_variable"href="classfourdst_1_1composition_1_1_composition.html#ab6c66f35e1fb05dd24aacaf90e115c5e">m_logger</a>, <spanclass="stringliteral">"Index {} is negative. Cannot get species at negative index."</span>, index);</div>
<divclass="line"><aid="l00884"name="l00884"></a><spanclass="lineno"> 884</span><spanclass="keywordflow">throw</span> std::out_of_range(<spanclass="stringliteral">"Index "</span> + std::to_string(index) + <spanclass="stringliteral">" is negative. Cannot get species at negative index."</span>);</div>
<divclass="line"><aid="l00907"name="l00907"></a><spanclass="lineno"> 907</span><spanclass="comment">// Check if the isotope's symbol is in the composition</span></div>
<divclass="line"><aid="l00909"name="l00909"></a><spanclass="lineno"> 909</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="l00910"name="l00910"></a><spanclass="lineno"> 910</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="l00926"name="l00926"></a><spanclass="lineno"> 926</span> os <<<spanclass="stringliteral">"Global Composition: \n"</span>;</div>
<divclass="line"><aid="l00927"name="l00927"></a><spanclass="lineno"> 927</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="l00928"name="l00928"></a><spanclass="lineno"> 928</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_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="#l00694">composition.cpp:694</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="#l00630">composition.cpp:630</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a1204a6421205feaaed13937aefa158ba"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a1204a6421205feaaed13937aefa158ba">fourdst::composition::Composition::getSpeciesIndex</a></div><divclass="ttdeci">size_t getSpeciesIndex(const std::string &symbol) const</div><divclass="ttdoc">get the index in the sorted vector representation for a given symbol</div><divclass="ttdef"><b>Definition</b><ahref="#l00823">composition.cpp:823</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="#l00665">composition.cpp:665</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="#l00233">composition.cpp:233</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="#l00921">composition.cpp:921</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a2a41242de5d49b005e0b608e79e2f2d9"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a2a41242de5d49b005e0b608e79e2f2d9">fourdst::composition::Composition::getNumberFractionVector</a></div><divclass="ttdeci">std::vector< double > getNumberFractionVector() const</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="#l00783">composition.cpp:783</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="#l00498">composition.cpp:498</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a3dee7b5e1f54920de9eab99f95a516ec"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a3dee7b5e1f54920de9eab99f95a516ec">fourdst::composition::Composition::getRegisteredSpecies</a></div><divclass="ttdeci">std::set< fourdst::atomic::Species > getRegisteredSpecies() const</div><divclass="ttdoc">Get a set of all species that are registered in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00280">composition.cpp:280</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="#l00464">composition.cpp:464</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="#l00312">composition.cpp:312</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#l00266">composition.h:266</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="#l00266">composition.cpp:266</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="#l00219">composition.cpp:219</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a66401fed7054172e9b1a2687e5cc8eff"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a66401fed7054172e9b1a2687e5cc8eff">fourdst::composition::Composition::getMeanParticleMass</a></div><divclass="ttdeci">double getMeanParticleMass() const</div><divclass="ttdoc">Compute the mean particle mass of the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00638">composition.cpp:638</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#l00267">composition.h:267</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a67a2ed844f3aee3d9cc1a3cb996eb56f"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a67a2ed844f3aee3d9cc1a3cb996eb56f">fourdst::composition::Composition::getMolarAbundance</a></div><divclass="ttdeci">double getMolarAbundance(const std::string &symbol) const</div><divclass="ttdoc">Gets the molar abundance (X_i / A_i) for a given symbol.</div><divclass="ttdef"><b>Definition</b><ahref="#l00596">composition.cpp:596</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a72a368f27094b03fdd9896844e075c94"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a72a368f27094b03fdd9896844e075c94">fourdst::composition::Composition::hasSymbol</a></div><divclass="ttdeci">bool hasSymbol(const std::string &symbol) const</div><divclass="ttdoc">Checks if a symbol is registered in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00902">composition.cpp:902</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="#l00414">composition.cpp:414</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a7731df9b30f8c8f13231f7e1a17b105c"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a7731df9b30f8c8f13231f7e1a17b105c">fourdst::composition::Composition::getNumberFraction</a></div><divclass="ttdeci">std::unordered_map< std::string, double > getNumberFraction() const</div><divclass="ttdoc">Gets the number fractions of all species in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00588">composition.cpp:588</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="#l00363">composition.cpp:363</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a84c7b72c2aee46b94492d404855dd3e0"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a84c7b72c2aee46b94492d404855dd3e0">fourdst::composition::Composition::getRegisteredSymbols</a></div><divclass="ttdeci">std::set< std::string > getRegisteredSymbols() const</div><divclass="ttdoc">Gets the registered symbols.</div><divclass="ttdef"><b>Definition</b><ahref="#l00276">composition.cpp:276</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a84d62b971bee83d944d2792c6850bc0b"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a84d62b971bee83d944d2792c6850bc0b">fourdst::composition::Composition::getMolarAbundanceVector</a></div><divclass="ttdeci">std::vector< double > getMolarAbundanceVector() const</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="#l00803">composition.cpp:803</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="#l00288">composition.cpp:288</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="#l00427">composition.cpp:427</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="#l00308">composition.cpp:308</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_a98199f435cb553f5cf4f8e520fdb8a7a"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#a98199f435cb553f5cf4f8e520fdb8a7a">fourdst::composition::Composition::getMeanAtomicNumber</a></div><divclass="ttdeci">double getMeanAtomicNumber() const</div><divclass="ttdoc">Compute the mean atomic number of the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00646">composition.cpp:646</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#l00264">composition.h:264</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_aa534a01f24074cc9edd7f41df228eb50"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#aa534a01f24074cc9edd7f41df228eb50">fourdst::composition::Composition::getSpeciesAtIndex</a></div><divclass="ttdeci">atomic::Species getSpeciesAtIndex(size_t index) const</div><divclass="ttdoc">Get the species at a given index in the sorted vector representation.</div><divclass="ttdef"><b>Definition</b><ahref="#l00873">composition.cpp:873</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="#l00715">composition.cpp:715</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_acb08478f7032ecc13cb02283a18187e9"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#acb08478f7032ecc13cb02283a18187e9">fourdst::composition::Composition::contains</a></div><divclass="ttdeci">bool contains(const fourdst::atomic::Species &isotope) const</div><divclass="ttdoc">Checks if a given isotope is present in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00906">composition.cpp:906</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_acdbdf980297580e885ce3f124164315f"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#acdbdf980297580e885ce3f124164315f">fourdst::composition::Composition::getMassFractionVector</a></div><divclass="ttdeci">std::vector< double > getMassFractionVector() const</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="#l00762">composition.cpp:762</a></div></div>
<divclass="ttc"id="aclassfourdst_1_1composition_1_1_composition_html_ad20bd541dd7c45274a2e586e6a0519a7"><divclass="ttname"><ahref="classfourdst_1_1composition_1_1_composition.html#ad20bd541dd7c45274a2e586e6a0519a7">fourdst::composition::Composition::getMassFraction</a></div><divclass="ttdeci">std::unordered_map< std::string, double > getMassFraction() const</div><divclass="ttdoc">Gets the mass fractions of all species in the composition.</div><divclass="ttdef"><b>Definition</b><ahref="#l00559">composition.cpp:559</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#l00265">composition.h:265</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="#l00295">composition.cpp:295</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="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#l00043">composition.h:43</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#l00045">composition.h:45</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#l00044">composition.h:44</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#l00046">composition.h:46</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#l00083">composition.h:83</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a0498d707d8ea78be39283786c10657ef"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a0498d707d8ea78be39283786c10657ef">fourdst::composition::CompositionEntry::m_relAbundance</a></div><divclass="ttdeci">double m_relAbundance</div><divclass="ttdoc">The relative abundance, used internally for conversions. For mass fraction mode, this is X_i / A_i; f...</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00090">composition.h:90</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="#l00172">composition.cpp:172</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="#l00063">composition.cpp:63</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#l00086">composition.h:86</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a2b5e245f7dabb11076efdbe1ed516d9f"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a2b5e245f7dabb11076efdbe1ed516d9f">fourdst::composition::CompositionEntry::m_numberFraction</a></div><divclass="ttdeci">double m_numberFraction</div><divclass="ttdoc">The number fraction (mole fraction) of the species. Valid only if m_massFracMode is false.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00089">composition.h:89</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="#l00114">composition.cpp:114</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#l00092">composition.h:92</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="#l00154">composition.cpp:154</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="#l00138">composition.cpp:138</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="#l00093">composition.cpp:93</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="#l00081">composition.cpp:81</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="#l00097">composition.cpp:97</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_a743042d1998875851150d789817f5473"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#a743042d1998875851150d789817f5473">fourdst::composition::CompositionEntry::setNumberFracMode</a></div><divclass="ttdeci">bool setNumberFracMode(double totalMoles)</div><divclass="ttdoc">Switches the mode to number fraction mode.</div><divclass="ttdef"><b>Definition</b><ahref="#l00163">composition.cpp:163</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="#l00146">composition.cpp:146</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="#l00130">composition.cpp:130</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#l00084">composition.h:84</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_adc20165bf94e18eea3458003025579ac"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#adc20165bf94e18eea3458003025579ac">fourdst::composition::CompositionEntry::m_massFraction</a></div><divclass="ttdeci">double m_massFraction</div><divclass="ttdoc">The mass fraction of the species. Valid only if m_massFracMode is true.</div><divclass="ttdef"><b>Definition</b><ahref="composition_8h_source.html#l00088">composition.h:88</a></div></div>
<divclass="ttc"id="astructfourdst_1_1composition_1_1_composition_entry_html_af4f8d292d18755670a914072e2260dfb"><divclass="ttname"><ahref="structfourdst_1_1composition_1_1_composition_entry.html#af4f8d292d18755670a914072e2260dfb">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="#l00134">composition.cpp:134</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#l00069">composition.h:69</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#l00070">composition.h:70</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#l00071">composition.h:71</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<divid="nav-path"class="navpath"><!-- id is needed for treeview function! -->
<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>