\doxysection{composition\+\_\+masked.\+cpp}
\hypertarget{composition__masked_8cpp_source}{}\label{composition__masked_8cpp_source}\index{src/composition/lib/decorators/composition\_masked.cpp@{src/composition/lib/decorators/composition\_masked.cpp}}
\mbox{\hyperlink{composition__masked_8cpp}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00001}00001\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{composition__masked_8h}{fourdst/composition/decorators/composition\_masked.h}}"{}}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00002}00002\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{exceptions__composition_8h}{fourdst/composition/exceptions/exceptions\_composition.h}}"{}}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00003}00003\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{species_8h}{fourdst/atomic/species.h}}"{}}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00004}00004\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00005}00005\ \textcolor{preprocessor}{\#include\ <algorithm>}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00006}00006\ \textcolor{preprocessor}{\#include\ <memory>}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00007}00007\ \textcolor{preprocessor}{\#include\ <string>}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00008}00008\ \textcolor{preprocessor}{\#include\ <vector>}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00009}00009\ \textcolor{preprocessor}{\#include\ <set>}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00010}00010\ \textcolor{preprocessor}{\#include\ <unordered\_map>}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00011}00011\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00012}00012\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{composition__hash_8h}{fourdst/composition/utils/composition\_hash.h}}"{}}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00013}00013\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00014}00014\ \textcolor{keyword}{namespace\ }\mbox{\hyperlink{namespacefourdst_1_1composition}{fourdst::composition}}\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00015}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a9a0d839e4534494b7adaf353d56e5375}{00015}}\ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a9a0d839e4534494b7adaf353d56e5375}{MaskedComposition::MaskedComposition}}(}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00016}00016\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_abstract}{CompositionAbstract}}\&\ baseComposition,}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00017}00017\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ std::vector<atomic::Species>\&\ activeSpecies}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00018}00018\ \ \ \ \ )\ :}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00019}00019\ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a115e0c194a3dffddc558e0305cc56677}{CompositionDecorator}}(baseComposition.\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a30f89ba71d9db6ad330c645d0a161164}{clone}}()),}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00020}00020\ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}(activeSpecies)\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00021}00021\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00022}00022\ \ \ \ \ \ \ \ \ std::ranges::sort(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}},\ [](\textcolor{keyword}{const}\ \textcolor{keyword}{auto}\ \&a,\ \textcolor{keyword}{const}\ \textcolor{keyword}{auto}\ \&b)\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00023}00023\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ a\ <\ b;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00024}00024\ \ \ \ \ \ \ \ \ \});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00025}00025\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00026}00026\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_abe4e28b36230fa41c11c22e36aaa15e7}{m\_molarAbundances}}.reserve(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.size());}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00027}00027\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keyword}{const}\ \textcolor{keyword}{auto}\&\ species\ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}})\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00028}00028\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00029}00029\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_abe4e28b36230fa41c11c22e36aaa15e7}{m\_molarAbundances}}.push\_back(0.0);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00030}00030\ \ \ \ \ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00031}00031\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_abe4e28b36230fa41c11c22e36aaa15e7}{m\_molarAbundances}}.push\_back(\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a0c46d440cafd9ae2d04589ece5fd41fb}{CompositionDecorator::getMolarAbundance}}(species));}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00032}00032\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00033}00033\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00034}00034\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00035}00035\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00036}00036\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00037}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{00037}}\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{MaskedComposition::contains}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic::Species}}\ \&species)\ \textcolor{keyword}{const}\ \textcolor{keyword}{noexcept}\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00038}00038\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::ranges::contains(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}},\ species);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00039}00039\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00040}00040\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00041}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a83b73b24715d8a0fc29811653bb7c9a6}{00041}}\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{MaskedComposition::contains}}(\textcolor{keyword}{const}\ std::string\ \&symbol)\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00042}00042\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{namespacefourdst_1_1atomic_a3f619cc8f8b2cd718a4082c6adb0de90}{atomic::species}}.\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{contains}}(symbol))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00043}00043\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1exceptions_1_1_unknown_symbol_error}{exceptions::UnknownSymbolError}}(\textcolor{stringliteral}{"{}Cannot\ find\ species\ '"{}}\ +\ symbol\ +\ \textcolor{stringliteral}{"{}'\ in\ base\ composition"{}});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00044}00044\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00045}00045\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic::Species}}\&\ species\ =\ \mbox{\hyperlink{namespacefourdst_1_1atomic_a3f619cc8f8b2cd718a4082c6adb0de90}{atomic::species}}.at(symbol);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00046}00046\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{contains}}(species);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00047}00047\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00048}00048\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00049}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a44fddc3b8d34b76114afafbdc9b0ec6d}{00049}}\ \ \ \ \ \textcolor{keyword}{const}\ std::vector<atomic::Species>\&\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a44fddc3b8d34b76114afafbdc9b0ec6d}{MaskedComposition::getRegisteredSpecies}}()\ const\ noexcept\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00050}00050\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}};}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00051}00051\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00052}00052\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00053}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a9b33507e9820b7fd55209d3624388077}{00053}}\ \ \ \ \ std::set<std::string>\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a9b33507e9820b7fd55209d3624388077}{MaskedComposition::getRegisteredSymbols}}()\ const\ noexcept\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00054}00054\ \ \ \ \ \ \ \ \ std::set<std::string>\ symbols;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00055}00055\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keyword}{const}\ \textcolor{keyword}{auto}\&\ species\ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}})\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00056}00056\ \ \ \ \ \ \ \ \ \ \ \ \ symbols.insert(std::string(species.name()));}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00057}00057\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00058}00058\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ symbols;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00059}00059\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00060}00060\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00061}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a6b6c7a9ad6293558ddc8834d22f4bc62}{00061}}\ \ \ \ \ \textcolor{keywordtype}{size\_t}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a6b6c7a9ad6293558ddc8834d22f4bc62}{MaskedComposition::size}}()\ const\ noexcept\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00062}00062\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.size();}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00063}00063\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00064}00064\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00065}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a2383b69a4b1dbe1c7be01bb826b06c07}{00065}}\ \ \ \ \ std::unordered\_map<atomic::Species,\ double>\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a2383b69a4b1dbe1c7be01bb826b06c07}{MaskedComposition::getMassFraction}}()\ const\ noexcept\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00066}00066\ \ \ \ \ \ \ \ \ std::unordered\_map<atomic::Species,\ double>\ massFractions;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00067}00067\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keyword}{const}\ \textcolor{keyword}{auto}\&\ species\ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}})\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00068}00068\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00069}00069\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ massFractions[species]\ =\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a8c1a4cd69465ef5b65bea547ed919ca5}{CompositionDecorator::getMassFraction}}(species);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00070}00070\ \ \ \ \ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00071}00071\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ massFractions[species]\ =\ 0.0;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00072}00072\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00073}00073\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00074}00074\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ massFractions;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00075}00075\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00076}00076\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00077}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a2c299c44f385b65202ed0d475402562a}{00077}}\ \ \ \ \ std::unordered\_map<atomic::Species,\ double>\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a2c299c44f385b65202ed0d475402562a}{MaskedComposition::getNumberFraction}}()\ const\ noexcept\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00078}00078\ \ \ \ \ \ \ \ \ std::unordered\_map<atomic::Species,\ double>\ numberFractions;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00079}00079\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keyword}{const}\ \textcolor{keyword}{auto}\&\ species\ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}})\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00080}00080\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00081}00081\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ numberFractions[species]\ =\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a66724877d66017bac3dc3cc784dda57c}{CompositionDecorator::getNumberFraction}}(species);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00082}00082\ \ \ \ \ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00083}00083\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ numberFractions[species]\ =\ 0.0;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00084}00084\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00085}00085\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00086}00086\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ numberFractions;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00087}00087\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00088}00088\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00089}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_ab2a8d9eb543eb712f9a0bbabcc94383a}{00089}}\ \ \ \ \ \textcolor{keywordtype}{double}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a2383b69a4b1dbe1c7be01bb826b06c07}{MaskedComposition::getMassFraction}}(\textcolor{keyword}{const}\ std::string\ \&symbol)\textcolor{keyword}{\ const\ \ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00090}00090\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{contains}}(symbol))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00091}00091\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error}{exceptions::UnregisteredSymbolError}}(\textcolor{stringliteral}{"{}Species\ '"{}}\ +\ symbol\ +\ \textcolor{stringliteral}{"{}'\ is\ not\ part\ of\ the\ active\ species\ in\ the\ MaskedComposition."{}});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00092}00092\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00093}00093\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(symbol))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00094}00094\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a8c1a4cd69465ef5b65bea547ed919ca5}{CompositionDecorator::getMassFraction}}(symbol);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00095}00095\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{return}\ 0.0;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00096}00096\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00097}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a81cab92e09924db1804e9b943611648a}{00097}}\ \ \ \ \ \textcolor{keywordtype}{double}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a2383b69a4b1dbe1c7be01bb826b06c07}{MaskedComposition::getMassFraction}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic::Species}}\ \&species)\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00098}00098\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00099}00099\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error}{exceptions::UnregisteredSymbolError}}(\textcolor{stringliteral}{"{}Species\ '"{}}\ +\ std::string(species.\mbox{\hyperlink{structfourdst_1_1atomic_1_1_species_a1fcc01fc978b34ba2531117f10be6741}{name}}())\ +\ \textcolor{stringliteral}{"{}'\ is\ not\ part\ of\ the\ active\ species\ in\ the\ MaskedComposition."{}});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00100}00100\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00101}00101\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00102}00102\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a8c1a4cd69465ef5b65bea547ed919ca5}{CompositionDecorator::getMassFraction}}(species);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00103}00103\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{return}\ 0.0;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00104}00104\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00105}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_af4f65f7cad735494aa5010cf0832f23b}{00105}}\ \ \ \ \ \textcolor{keywordtype}{double}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a2c299c44f385b65202ed0d475402562a}{MaskedComposition::getNumberFraction}}(\textcolor{keyword}{const}\ std::string\ \&symbol)\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00106}00106\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{contains}}(symbol))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00107}00107\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error}{exceptions::UnregisteredSymbolError}}(\textcolor{stringliteral}{"{}Species\ '"{}}\ +\ symbol\ +\ \textcolor{stringliteral}{"{}'\ is\ not\ part\ of\ the\ active\ species\ in\ the\ MaskedComposition."{}});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00108}00108\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00109}00109\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(symbol))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00110}00110\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a66724877d66017bac3dc3cc784dda57c}{CompositionDecorator::getNumberFraction}}(symbol);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00111}00111\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{return}\ 0.0;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00112}00112\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00113}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a7cbb41a5b9e8d49c85bcbc821c3ff47e}{00113}}\ \ \ \ \ \textcolor{keywordtype}{double}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a2c299c44f385b65202ed0d475402562a}{MaskedComposition::getNumberFraction}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic::Species}}\ \&species)\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00114}00114\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00115}00115\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error}{exceptions::UnregisteredSymbolError}}(\textcolor{stringliteral}{"{}Species\ '"{}}\ +\ std::string(species.\mbox{\hyperlink{structfourdst_1_1atomic_1_1_species_a1fcc01fc978b34ba2531117f10be6741}{name}}())\ +\ \textcolor{stringliteral}{"{}'\ is\ not\ part\ of\ the\ active\ species\ in\ the\ MaskedComposition."{}});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00116}00116\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00117}00117\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00118}00118\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a66724877d66017bac3dc3cc784dda57c}{CompositionDecorator::getNumberFraction}}(species);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00119}00119\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{return}\ 0.0;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00120}00120\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00121}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a3064af4fb0b59dce5b484d5657d25506}{00121}}\ \ \ \ \ \textcolor{keywordtype}{double}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a3064af4fb0b59dce5b484d5657d25506}{MaskedComposition::getMolarAbundance}}(\textcolor{keyword}{const}\ std::string\ \&symbol)\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00122}00122\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{contains}}(symbol))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00123}00123\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error}{exceptions::UnregisteredSymbolError}}(\textcolor{stringliteral}{"{}Species\ '"{}}\ +\ symbol\ +\ \textcolor{stringliteral}{"{}'\ is\ not\ part\ of\ the\ active\ species\ in\ the\ MaskedComposition."{}});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00124}00124\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00125}00125\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(symbol))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00126}00126\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a0c46d440cafd9ae2d04589ece5fd41fb}{CompositionDecorator::getMolarAbundance}}(symbol);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00127}00127\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{return}\ 0.0;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00128}00128\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00129}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a9766e12e53e504aab985e46dc4e0d6d6}{00129}}\ \ \ \ \ \textcolor{keywordtype}{double}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a3064af4fb0b59dce5b484d5657d25506}{MaskedComposition::getMolarAbundance}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic::Species}}\ \&species)\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00130}00130\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00131}00131\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error}{exceptions::UnregisteredSymbolError}}(\textcolor{stringliteral}{"{}Species\ '"{}}\ +\ std::string(species.\mbox{\hyperlink{structfourdst_1_1atomic_1_1_species_a1fcc01fc978b34ba2531117f10be6741}{name}}())\ +\ \textcolor{stringliteral}{"{}'\ is\ not\ part\ of\ the\ active\ species\ in\ the\ MaskedComposition."{}});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00132}00132\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00133}00133\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00134}00134\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a0c46d440cafd9ae2d04589ece5fd41fb}{CompositionDecorator::getMolarAbundance}}(species);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00135}00135\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{return}\ 0.0;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00136}00136\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00137}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a3f50005318f2aa7bf7c3cd5b1d2aef7a}{00137}}\ \ \ \ \ \textcolor{keywordtype}{double}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a3f50005318f2aa7bf7c3cd5b1d2aef7a}{MaskedComposition::getMeanParticleMass}}()\ const\ noexcept\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00138}00138\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{double}\ meanParticleMass\ =\ 0.0;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00139}00139\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keyword}{const}\ \textcolor{keyword}{auto}\&\ species\ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}})\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00140}00140\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00141}00141\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{double}\ numberFraction\ =\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a66724877d66017bac3dc3cc784dda57c}{CompositionDecorator::getNumberFraction}}(species);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00142}00142\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{double}\ atomicMass\ =\ species.mass();}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00143}00143\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ meanParticleMass\ +=\ numberFraction\ *\ atomicMass;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00144}00144\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00145}00145\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00146}00146\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ meanParticleMass;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00147}00147\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00148}00148\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00149}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a38fc871469f94b3c07ba18a00548085d}{00149}}\ \ \ \ \ \textcolor{keywordtype}{double}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a38fc871469f94b3c07ba18a00548085d}{MaskedComposition::getElectronAbundance}}()\ const\ noexcept\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00150}00150\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{double}\ Ye\ =\ 0.0;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00151}00151\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keyword}{const}\ \textcolor{keyword}{auto}\&\ species\ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}})\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00152}00152\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a811e91b7cc08f19b8c92de43fdb91401}{CompositionDecorator::contains}}(species))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00153}00153\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Ye\ +=\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a0c46d440cafd9ae2d04589ece5fd41fb}{CompositionDecorator::getMolarAbundance}}(species)\ *\ species.z();}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00154}00154\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00155}00155\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00156}00156\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ Ye;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00157}00157\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00158}00158\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00159}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a7655d278224486e762d22d0501187f58}{00159}}\ \ \ \ \ std::vector<double>\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a7655d278224486e762d22d0501187f58}{MaskedComposition::getMassFractionVector}}()\ const\ noexcept\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00160}00160\ \ \ \ \ \ \ \ \ std::vector<double>\ massFractions;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00161}00161\ \ \ \ \ \ \ \ \ massFractions.reserve(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.size());}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00162}00162\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keyword}{const}\ \textcolor{keyword}{auto}\&\ species\ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}})\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00163}00163\ \ \ \ \ \ \ \ \ \ \ \ \ massFractions.push\_back(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a2383b69a4b1dbe1c7be01bb826b06c07}{getMassFraction}}(species));}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00164}00164\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00165}00165\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ massFractions;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00166}00166\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00167}00167\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00168}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_ad28b1f5c98bd25378c24c732d74deab4}{00168}}\ \ \ \ \ std::vector<double>\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_ad28b1f5c98bd25378c24c732d74deab4}{MaskedComposition::getNumberFractionVector}}()\ const\ noexcept\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00169}00169\ \ \ \ \ \ \ \ \ std::vector<double>\ numberFractions;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00170}00170\ \ \ \ \ \ \ \ \ numberFractions.reserve(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.size());}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00171}00171\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keyword}{const}\ \textcolor{keyword}{auto}\&\ species\ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}})\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00172}00172\ \ \ \ \ \ \ \ \ \ \ \ \ numberFractions.push\_back(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a2c299c44f385b65202ed0d475402562a}{getNumberFraction}}(species));}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00173}00173\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00174}00174\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ numberFractions;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00175}00175\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00176}00176\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00177}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_ac2f827bedae5405ebab7108b2e4397c5}{00177}}\ \ \ \ \ std::vector<double>\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_ac2f827bedae5405ebab7108b2e4397c5}{MaskedComposition::getMolarAbundanceVector}}()\ const\ noexcept\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00178}00178\ \ \ \ \ \ \ \ \ std::vector<double>\ molarAbundances;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00179}00179\ \ \ \ \ \ \ \ \ molarAbundances.reserve(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.size());}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00180}00180\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\textcolor{keyword}{const}\ \textcolor{keyword}{auto}\&\ species\ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}})\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00181}00181\ \ \ \ \ \ \ \ \ \ \ \ \ molarAbundances.push\_back(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a3064af4fb0b59dce5b484d5657d25506}{getMolarAbundance}}(species));}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00182}00182\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00183}00183\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ molarAbundances;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00184}00184\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00185}00185\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00186}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a7277650debc78e081963663557de73eb}{00186}}\ \ \ \ \ \textcolor{keywordtype}{size\_t}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a7277650debc78e081963663557de73eb}{MaskedComposition::getSpeciesIndex}}(\textcolor{keyword}{const}\ std::string\ \&symbol)\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00187}00187\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a045cfdf1e771895df872a6da61c53966}{contains}}(symbol))\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00188}00188\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1exceptions_1_1_unregistered_symbol_error}{exceptions::UnregisteredSymbolError}}(\textcolor{stringliteral}{"{}Species\ '"{}}\ +\ symbol\ +\ \textcolor{stringliteral}{"{}'\ is\ not\ part\ of\ the\ active\ species\ in\ the\ MaskedComposition."{}});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00189}00189\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00190}00190\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::distance(}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00191}00191\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.begin(),}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00192}00192\ \ \ \ \ \ \ \ \ \ \ \ \ std::ranges::find\_if(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}},}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00193}00193\ \ \ \ \ \ \ \ \ \ \ \ \ [\&symbol](\textcolor{keyword}{const}\ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic::Species}}\&\ sp)\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00194}00194\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return\ std::string(sp.name())\ ==\ symbol;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00195}00195\ \ \ \ \ \ \ \ \ \}));}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00196}00196\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00197}00197\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00198}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a395e5b14cd2a9f9d467fea25542f8ebd}{00198}}\ \ \ \ \ \textcolor{keywordtype}{size\_t}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a7277650debc78e081963663557de73eb}{MaskedComposition::getSpeciesIndex}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic::Species}}\ \&species)\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00199}00199\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::distance(}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00200}00200\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.begin(),}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00201}00201\ \ \ \ \ \ \ \ \ \ \ \ \ std::ranges::find(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}},\ species)}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00202}00202\ \ \ \ \ \ \ \ \ );}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00203}00203\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00204}00204\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00205}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_acc9d3af0aad6c6209c9aefd94f86996b}{00205}}\ \ \ \ \ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic::Species}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_acc9d3af0aad6c6209c9aefd94f86996b}{MaskedComposition::getSpeciesAtIndex}}(\textcolor{keyword}{const}\ \textcolor{keywordtype}{size\_t}\ index)\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00206}00206\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (index\ >=\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.size())\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00207}00207\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ std::out\_of\_range(\textcolor{stringliteral}{"{}Index\ "{}}\ +\ std::to\_string(index)\ +\ \textcolor{stringliteral}{"{}\ is\ out\ of\ bounds\ for\ active\ species\ of\ size\ "{}}\ +\ std::to\_string(\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.size())\ +\ \textcolor{stringliteral}{"{}."{}});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00208}00208\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00209}00209\ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\ it\ =\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.begin();}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00210}00210\ \ \ \ \ \ \ \ \ std::advance(it,\ index);}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00211}00211\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ *it;}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00212}00212\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00213}00213\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00214}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a30f89ba71d9db6ad330c645d0a161164}{00214}}\ \ \ \ \ std::unique\_ptr<CompositionAbstract>\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a30f89ba71d9db6ad330c645d0a161164}{MaskedComposition::clone}}()\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00215}00215\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::make\_unique<MaskedComposition>(*\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator_a785a5aeddcc68ce3a5b688d956c4d505}{m\_base\_composition}},\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00216}00216\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00217}00217\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00218}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_aa01637b823d0127736cdc767284eb28d}{00218}}\ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_afe3129b1dbebfbe0578c3a555aa742bf}{MaskedComposition::iterator}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_aa01637b823d0127736cdc767284eb28d}{MaskedComposition::begin}}()\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00219}00219\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \{\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.begin(),\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_abe4e28b36230fa41c11c22e36aaa15e7}{m\_molarAbundances}}.begin()\};}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00220}00220\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00221}00221\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00222}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_aae6a6799ee6877064728bd880348420d}{00222}}\ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_afe3129b1dbebfbe0578c3a555aa742bf}{MaskedComposition::iterator}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_aae6a6799ee6877064728bd880348420d}{MaskedComposition::end}}()\ \{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00223}00223\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \ \{\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.end(),\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_abe4e28b36230fa41c11c22e36aaa15e7}{m\_molarAbundances}}.end()\};}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00224}00224\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00225}00225\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00226}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a047dae84149b92be5849c4294cd481de}{00226}}\ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_acd2bbf05d4f5fce5a1146619a0b16b6d}{MaskedComposition::const\_iterator}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_aa01637b823d0127736cdc767284eb28d}{MaskedComposition::begin}}()\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00227}00227\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \{\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.cbegin(),\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_abe4e28b36230fa41c11c22e36aaa15e7}{m\_molarAbundances}}.cbegin()\};}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00228}00228\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00229}00229\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00230}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a272b2164c1ad6efab7e86ed26efcbb96}{00230}}\ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_acd2bbf05d4f5fce5a1146619a0b16b6d}{MaskedComposition::const\_iterator}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_aae6a6799ee6877064728bd880348420d}{MaskedComposition::end}}()\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00231}00231\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \{\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a22a5b2ea210bb14a07b6461270631a3b}{m\_activeSpecies}}.cend(),\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_abe4e28b36230fa41c11c22e36aaa15e7}{m\_molarAbundances}}.cend()\};}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00232}00232\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00233}00233\ }
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00234}\mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a0cff238d7aec2db1f7c509d199b56afb}{00234}}\ \ \ \ \ \textcolor{keywordtype}{size\_t}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition_a0cff238d7aec2db1f7c509d199b56afb}{MaskedComposition::hash}}()\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00235}00235\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{structfourdst_1_1composition_1_1utils_1_1_composition_hash_af30bb4f60999d9ad99ad3893efa2de65}{utils::CompositionHash::hash\_exact<MaskedComposition>}}(*\textcolor{keyword}{this});}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00236}00236\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__masked_8cpp_source_l00237}00237\ \};}

\end{DoxyCode}
