2025-07-24 09:35:52 -04:00
\doxysection { fourdst\+ ::composition Namespace Reference}
\hypertarget { namespacefourdst_ 1_ 1composition} { } \label { namespacefourdst_ 1_ 1composition} \index { fourdst::composition@{ fourdst::composition} }
2025-11-08 06:42:51 -05:00
Utilities and types for representing and manipulating chemical compositions.
2025-07-24 09:35:52 -04:00
\doxysubsubsection * { Namespaces}
\begin { DoxyCompactItemize}
\item
2026-05-18 10:08:43 -04:00
namespace \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ 1_ 1detail} { detail} }
\item
2025-07-24 09:35:52 -04:00
namespace \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ 1_ 1exceptions} { exceptions} }
2025-11-27 17:47:38 -05:00
\item
namespace \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ 1_ 1utils} { utils} }
2025-07-24 09:35:52 -04:00
\end { DoxyCompactItemize}
\doxysubsubsection * { Classes}
\begin { DoxyCompactItemize}
\item
2026-05-18 10:08:43 -04:00
struct \mbox { \hyperlink { structfourdst_ 1_ 1composition_ 1_ 1_ canonical_ composition} { Canonical\+ Composition} }
2025-07-24 09:35:52 -04:00
\begin { DoxyCompactList} \small \item \em Represents the canonical (X, Y, Z) composition of stellar material. \end { DoxyCompactList} \item
2026-05-18 10:08:43 -04:00
class \mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} }
2025-11-27 17:47:38 -05:00
\begin { DoxyCompactList} \small \item \em Manages a collection of chemical species and their abundances. \end { DoxyCompactList} \item
2026-05-18 10:08:43 -04:00
class \mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ abstract} { Composition\+ Abstract} }
2025-11-27 17:47:38 -05:00
\begin { DoxyCompactList} \small \item \em Abstract base class for chemical composition representations. \end { DoxyCompactList} \item
2026-05-18 10:08:43 -04:00
class \mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ decorator} { Composition\+ Decorator} }
2025-11-27 17:47:38 -05:00
\item
2026-05-18 10:08:43 -04:00
class \mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ masked_ composition} { Masked\+ Composition} }
2025-11-27 17:47:38 -05:00
\end { DoxyCompactItemize}
2025-07-24 09:35:52 -04:00
\doxysubsubsection * { Functions}
\begin { DoxyCompactItemize}
\item
2026-05-18 10:08:43 -04:00
bool \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ a06f5abc74104de40349e47ad367c402a} { operator==} } (const \mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \& a, const \mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \& b) noexcept
\item
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ aa90b1ef07d607c0c829bedccf381cf54} { build\+ Composition\+ From\+ Mass\+ Fractions} } (const std\+ ::vector$ < $ std\+ ::string $ > $ \& symbols, const std\+ ::vector$ < $ double $ > $ \& mass\+ Fractions)
\begin { DoxyCompactList} \small \item \em Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from symbols and their corresponding mass fractions. \end { DoxyCompactList} \item
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ a39d4f84dfa85ddda3b9feb5dda1afc1e} { build\+ Composition\+ From\+ Mass\+ Fractions} } (const std\+ ::vector$ < $ \mbox { \hyperlink { structfourdst_ 1_ 1atomic_ 1_ 1_ species} { atomic\+ ::\+ Species} } $ > $ \& species, const std\+ ::vector$ < $ double $ > $ \& mass\+ Fractions)
\begin { DoxyCompactList} \small \item \em Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from species and their corresponding mass fractions. \end { DoxyCompactList} \item
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ a2cb98194b465f646973ceba38d0e7d95} { build\+ Composition\+ From\+ Mass\+ Fractions} } (const std\+ ::set$ < $ \mbox { \hyperlink { structfourdst_ 1_ 1atomic_ 1_ 1_ species} { atomic\+ ::\+ Species} } $ > $ \& species, const std\+ ::vector$ < $ double $ > $ \& mass\+ Fractions)
\begin { DoxyCompactList} \small \item \em Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from species in a set and their corresponding mass fractions. \end { DoxyCompactList} \item
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ ada2fea5f3ac5cff3ecd67541a0a094fc} { build\+ Composition\+ From\+ Mass\+ Fractions} } (const std\+ ::unordered\+ \_ \+ map$ < $ \mbox { \hyperlink { structfourdst_ 1_ 1atomic_ 1_ 1_ species} { atomic\+ ::\+ Species} } , double $ > $ \& mass\+ Fractions\+ Map)
\begin { DoxyCompactList} \small \item \em Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from a map of species to mass fractions. \end { DoxyCompactList} \item
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ abf844ad6e10524bf99fc3bf6c9d68465} { build\+ Composition\+ From\+ Mass\+ Fractions} } (const std\+ ::unordered\+ \_ \+ map$ < $ std\+ ::string, double $ > $ \& mass\+ Fractions)
\begin { DoxyCompactList} \small \item \em Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from a map of species to mass fractions. \end { DoxyCompactList} \item
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ a8163289e584a05b4075c775279761e55} { build\+ Composition\+ From\+ Mass\+ Fractions} } (std\+ ::map$ < $ \mbox { \hyperlink { structfourdst_ 1_ 1atomic_ 1_ 1_ species} { atomic\+ ::\+ Species} } , double $ > $ mass\+ Fractions)
\begin { DoxyCompactList} \small \item \em Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from a map of species to mass fractions. \end { DoxyCompactList} \item
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ abd0e185f7fd52130f36414faf2dc07d7} { build\+ Composition\+ From\+ Mass\+ Fractions} } (std\+ ::map$ < $ std\+ ::string, double $ > $ mass\+ Fractions)
\begin { DoxyCompactList} \small \item \em Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from a map of species to mass fractions. \end { DoxyCompactList} \item
std\+ ::optional$ < $ \mbox { \hyperlink { structfourdst_ 1_ 1atomic_ 1_ 1_ species} { fourdst\+ ::atomic\+ ::\+ Species} } $ > $ \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ adcc2e4ca25ab7b93983730fc78f4deea} { get\+ Species} } (const std\+ ::string \& symbol)
2025-11-27 17:47:38 -05:00
\item
2026-05-18 10:08:43 -04:00
std\+ ::ostream \& \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ a5e8ccc2bd9e91eebcd3ef5fe470163a1} { operator$ < $ $ < $ } } (std\+ ::ostream \& os, const \mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \& composition)
\end { DoxyCompactItemize}
2025-11-08 06:42:51 -05:00
\doxysubsection { Detailed Description}
Utilities and types for representing and manipulating chemical compositions.
2026-05-18 10:08:43 -04:00
The composition module provides a small, but expressive, API for constructing and querying material compositions used throughout the 4D-\/ \+ STAR codebase. A \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} represents a collection of atomic species together with their molar abundances. From these molar abundances the module can compute derived quantities such as mass fractions, number fractions, canonical (X, Y, Z) composition, mean particle mass, and the electron abundance (Y\+ \_ \+ e).
2025-11-08 06:42:51 -05:00
Key concepts\+ :
\begin { DoxyItemize}
2026-05-18 10:08:43 -04:00
\item Species and Symbols\+ : Atomic isotopes are represented by the strongly-\/ typed \doxylink { structfourdst_ 1_ 1atomic_ 1_ 1_ species} { fourdst\+ ::atomic\+ ::\+ Species} values (see { \ttfamily \doxylink { species_ 8h} { fourdst/atomic/species.\+ h} } ). Each species also has a human-\/ readable string symbol (e.\+ g. "{ } \+ H-\/ 1"{ } , "{ } \+ He-\/ 4"{ } ) used by some constructors and convenience overloads.
\item Molar abundances\+ : The \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} API accepts and stores molar abundances (absolute mole counts). Many derived quantities (mass fraction, number fraction, mean particle mass) are computed from these molar abundances.
\item Canonical composition\+ : A \doxylink { structfourdst_ 1_ 1composition_ 1_ 1_ canonical_ composition} { Canonical\+ Composition} (X, Y, Z) is provided which groups mass fractions into hydrogen (X), helium (Y), and metals (Z). A lightweight struct { \ttfamily \doxylink { structfourdst_ 1_ 1composition_ 1_ 1_ canonical_ composition} { Canonical\+ Composition} } holds these values and provides an ostream operator for easy logging and testing.
\item Caching\+ : The concrete \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} implementation caches computed vectors and scalars to avoid repeated work. The cache is invalidated automatically when molar abundances or registered species are changed.
2025-11-08 06:42:51 -05:00
\end { DoxyItemize} \hypertarget { namespacefourdst_ 1_ 1composition_ autotoc_ md6} { } \doxysubsubsection { \texorpdfstring { Main types and functions} { Main types and functions} } \label { namespacefourdst_ 1_ 1composition_ autotoc_ md6}
\begin { DoxyItemize}
2026-05-18 10:08:43 -04:00
\item \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} \+ : The primary concrete class for building and interrogating compositions. It implements the \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ abstract} { Composition\+ Abstract} interface and exposes methods to register symbols/species, set molar abundances, and query all commonly-\/ needed derived quantities. Multiple constructors are provided for convenience (from vectors/sets of symbols or species, with optional molar-\/ abundance initialization).
2025-11-08 06:42:51 -05:00
Important member functions include\+ :
\begin { DoxyItemize}
\item register\+ Symbol / register\+ Species (single or many overloads)
\item set\+ Molar\+ Abundance (many overloads accepting symbols or species)
\item get\+ Molar\+ Abundance, get\+ Mass\+ Fraction, get\+ Number\+ Fraction (symbol and species overloads)
\item get\+ Mass\+ Fraction\+ Vector, get\+ Number\+ Fraction\+ Vector, get\+ Molar\+ Abundance\+ Vector
\item get\+ Mean\+ Particle\+ Mass, get\+ Electron\+ Abundance
\item get\+ Canonical\+ Composition
\item Iteration support (begin/end) which iterates species from lightest to heaviest because species ordering is defined by atomic mass.
\end { DoxyItemize}
2026-05-18 10:08:43 -04:00
\item \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ abstract} { Composition\+ Abstract} \+ : A compact abstract interface implemented by \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} which guarantees the presence of all getter/query methods. This allows other components to accept composition-\/ like objects without depending on the concrete implementation.
\item Utilities (\doxylink { namespacefourdst_ 1_ 1composition_ aa90b1ef07d607c0c829bedccf381cf54} { fourdst\+ ::composition\+ ::build\+ Composition\+ From\+ Mass\+ Fractions} )\+ : Convenience helpers exist to construct a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} from mass fractions (instead of molar abundances). Those helpers validate that the provided mass fractions sum to unity within a tight tolerance and convert them into the corresponding molar abundances before returning a populated \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} .
2025-11-08 06:42:51 -05:00
\item Exceptions (namespace \doxylink { namespacefourdst_ 1_ 1composition_ 1_ 1exceptions} { fourdst\+ ::composition\+ ::exceptions} )\+ : The module defines a small hierarchy of exceptions for error handling\+ :
\begin { DoxyItemize}
\item Composition\+ Error\+ : Base class for composition-\/ related errors.
\item Invalid\+ Composition\+ Error\+ : Thrown when the composition is inconsistent or when mass fractions fail validation.
2026-05-18 10:08:43 -04:00
\item Unregistered\+ Symbol\+ Error\+ : Thrown when an operation requires a symbol that hasn\textquotesingle { } t been registered on the \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object.
2025-11-08 06:42:51 -05:00
\item Unknown\+ Symbol\+ Error\+ : Thrown when a provided string symbol does not map to any known atomic species in the atomic species database.
\end { DoxyItemize}
\end { DoxyItemize} \hypertarget { namespacefourdst_ 1_ 1composition_ autotoc_ md7} { } \doxysubsubsection { \texorpdfstring { Usage examples} { Usage examples} } \label { namespacefourdst_ 1_ 1composition_ autotoc_ md7}
Example 1 – basic construction and queries\+ :
\begin { DoxyCode} { 0}
\DoxyCodeLine { \textcolor { preprocessor} { \# include\ "{ } \mbox { \hyperlink { composition_ 8h} { fourdst/composition/composition.h} } "{ } } }
\DoxyCodeLine { }
\DoxyCodeLine { \textcolor { keyword} { using\ namespace\ } \mbox { \hyperlink { namespacefourdst_ 1_ 1composition} { fourdst::composition} } ;}
\DoxyCodeLine { }
2026-05-18 10:08:43 -04:00
\DoxyCodeLine { \mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \ comp;}
\DoxyCodeLine { comp.\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ a3ab4dcda0bfd1a35b169bcc57fe66725} { registerSymbol} } (\textcolor { stringliteral} { "{ } H-\/ 1"{ } } );}
\DoxyCodeLine { comp.\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ a3ab4dcda0bfd1a35b169bcc57fe66725} { registerSymbol} } (\textcolor { stringliteral} { "{ } He-\/ 4"{ } } );}
\DoxyCodeLine { comp.\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ a262d7133035d4e6f45daa81827abf5e7} { setMolarAbundance} } (\textcolor { stringliteral} { "{ } H-\/ 1"{ } } ,\ 1.0);}
\DoxyCodeLine { comp.\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ a262d7133035d4e6f45daa81827abf5e7} { setMolarAbundance} } (\textcolor { stringliteral} { "{ } He-\/ 4"{ } } ,\ 0.5);}
2025-11-08 06:42:51 -05:00
\DoxyCodeLine { }
2026-05-18 10:08:43 -04:00
\DoxyCodeLine { \textcolor { keywordtype} { double} \ X\_ h1\ =\ comp.\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ a9ea2b673341fdc67afeb0f0517a54c8c} { getMassFraction} } (\textcolor { stringliteral} { "{ } H-\/ 1"{ } } );}
\DoxyCodeLine { \textcolor { keywordtype} { double} \ meanA\ =\ comp.\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ afbbb5e51ad5ae5c0fa6bc0094195aecd} { getMeanParticleMass} } ();}
\DoxyCodeLine { \mbox { \hyperlink { structfourdst_ 1_ 1composition_ 1_ 1_ canonical_ composition} { CanonicalComposition} } \ canon\ =\ comp.\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition_ aac5b214a3d1278e127422224cb9cee50} { getCanonicalComposition} } ();}
2025-11-08 06:42:51 -05:00
\DoxyCodeLine { std::cout\ <<\ canon\ <<\ std::endl;\ \textcolor { comment} { //\ prints\ X,\ Y,\ Z} }
\end { DoxyCode}
Example 2 – constructing from mass fractions\+ :
\begin { DoxyCode} { 0}
\DoxyCodeLine { \textcolor { preprocessor} { \# include\ "{ } \mbox { \hyperlink { utils_ 8h} { fourdst/composition/utils.h} } "{ } } }
\DoxyCodeLine { }
\DoxyCodeLine { std::vector<std::string>\ symbols\ =\ \{ \textcolor { stringliteral} { "{ } H-\/ 1"{ } } ,\ \textcolor { stringliteral} { "{ } He-\/ 4"{ } } ,\ \textcolor { stringliteral} { "{ } C-\/ 12"{ } } \} ;}
\DoxyCodeLine { std::vector<double>\ massFractions\ =\ \{ 0.70,\ 0.28,\ 0.02\} ;}
2026-05-18 10:08:43 -04:00
\DoxyCodeLine { \mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } \ comp\ =\ \mbox { \hyperlink { namespacefourdst_ 1_ 1composition_ aa90b1ef07d607c0c829bedccf381cf54} { buildCompositionFromMassFractions} } (symbols,\ massFractions);}
2025-11-08 06:42:51 -05:00
\end { DoxyCode}
\hypertarget { namespacefourdst_ 1_ 1composition_ autotoc_ md8} { } \doxysubsubsection { \texorpdfstring { Notes and remarks} { Notes and remarks} } \label { namespacefourdst_ 1_ 1composition_ autotoc_ md8}
\begin { DoxyItemize}
2026-05-18 10:08:43 -04:00
\item Molar abundances are the canonical input for the \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} class. When passing mass fractions, use the { \ttfamily build\+ Composition\+ From\+ Mass\+ Fractions} helper which performs the safe conversion and validation.
2025-11-08 06:42:51 -05:00
\item Many methods throw exceptions from the { \ttfamily \doxylink { namespacefourdst_ 1_ 1composition_ 1_ 1exceptions} { fourdst\+ ::composition\+ ::exceptions} } namespace on invalid usage (unknown symbols, unregistered species, or invalid abundance values). Callers should catch and handle these where appropriate.
\item Floating point results (mass/number fractions, mean particle mass, Y\+ \_ \+ e) are computed as doubles and may have small numerical round-\/ off. Callers comparing values in tests should use an appropriate tolerance.
\end { DoxyItemize} \hypertarget { namespacefourdst_ 1_ 1composition_ autotoc_ md9} { } \doxysubsubsection { \texorpdfstring { See also} { See also} } \label { namespacefourdst_ 1_ 1composition_ autotoc_ md9}
\begin { DoxyItemize}
\item \doxylink { species_ 8h} { fourdst/atomic/species.\+ h} — canonical atomic species definitions and symbols.
2026-05-18 10:08:43 -04:00
\item \doxylink { composition_ 8h} { fourdst/composition/composition.\+ h} — concrete \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} implementation.
2025-11-08 06:42:51 -05:00
\item \doxylink { composition_ _ abstract_ 8h} { fourdst/composition/composition\+ \_ \+ abstract.\+ h} — abstract composition interface.
\item \doxylink { utils_ 8h} { fourdst/composition/utils.\+ h} — helpers for constructing compositions from mass fractions.
\end { DoxyItemize}
2025-07-24 09:35:52 -04:00
\doxysubsection { Function Documentation}
2026-05-18 10:08:43 -04:00
\Hypertarget { namespacefourdst_ 1_ 1composition_ a2cb98194b465f646973ceba38d0e7d95} \index { fourdst::composition@{ fourdst::composition} !buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} }
2025-11-08 06:42:51 -05:00
\index { buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} !fourdst::composition@{ fourdst::composition} }
2025-11-27 17:47:38 -05:00
\doxysubsubsection { \texorpdfstring { buildCompositionFromMassFractions()} { buildCompositionFromMassFractions()} \hspace { 0.1cm} { \footnotesize \ttfamily [1/7]} }
2026-05-18 10:08:43 -04:00
{ \footnotesize \ttfamily \label { namespacefourdst_ 1_ 1composition_ a2cb98194b465f646973ceba38d0e7d95}
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } fourdst\+ ::composition\+ ::build\+ Composition\+ From\+ Mass\+ Fractions (\begin { DoxyParamCaption} \item [{const std\+::set$<$ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic\+::\+Species}} $>$ \&}] { species} { , } \item [{const std\+::vector$<$ double $>$ \&}] { mass\+ Fractions} { } \end { DoxyParamCaption} )}
2025-11-08 06:42:51 -05:00
2026-05-18 10:08:43 -04:00
Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from species in a set and their corresponding mass fractions.
2025-07-24 09:35:52 -04:00
\begin { DoxyParams} { Parameters}
2025-11-08 06:42:51 -05:00
{ \em species} & The species to register. \\
2025-07-24 09:35:52 -04:00
\hline
2025-11-08 06:42:51 -05:00
{ \em mass\+ Fractions} & The corresponding mass fractions for each species. \\
2025-07-24 09:35:52 -04:00
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2026-05-18 10:08:43 -04:00
A \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object constructed from the provided species and mass fractions.
2025-07-24 09:35:52 -04:00
\end { DoxyReturn}
2025-11-08 06:42:51 -05:00
\begin { DoxyExceptions} { Exceptions}
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ invalid_ composition_ error} { exceptions\+ ::\+ Invalid\+ Composition\+ Error} } & if the provided mass fractions do not sum to within one part in 10\texorpdfstring { $ ^ \wedge $ } { \string ^ } 10 of 1.\+ 0. \\
2025-11-08 06:42:51 -05:00
\hline
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ invalid_ composition_ error} { exceptions\+ ::\+ Invalid\+ Composition\+ Error} } & if the number of species does not match the number of mass fractions.\\
2025-11-08 06:42:51 -05:00
\hline
\end { DoxyExceptions}
\begin { DoxyNote} { Note}
This is the version of the function which the other overloads ultimately call.
\end { DoxyNote}
2025-07-24 09:35:52 -04:00
2026-05-18 10:08:43 -04:00
Definition at line \mbox { \hyperlink { utils_ 8cpp_ source_ l00029} { 29} } of file \mbox { \hyperlink { utils_ 8cpp_ source} { utils.\+ cpp} } .
2025-11-08 06:42:51 -05:00
2026-05-18 10:08:43 -04:00
\Hypertarget { namespacefourdst_ 1_ 1composition_ ada2fea5f3ac5cff3ecd67541a0a094fc} \index { fourdst::composition@{ fourdst::composition} !buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} }
2025-11-27 17:47:38 -05:00
\index { buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} !fourdst::composition@{ fourdst::composition} }
\doxysubsubsection { \texorpdfstring { buildCompositionFromMassFractions()} { buildCompositionFromMassFractions()} \hspace { 0.1cm} { \footnotesize \ttfamily [2/7]} }
2026-05-18 10:08:43 -04:00
{ \footnotesize \ttfamily \label { namespacefourdst_ 1_ 1composition_ ada2fea5f3ac5cff3ecd67541a0a094fc}
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } fourdst\+ ::composition\+ ::build\+ Composition\+ From\+ Mass\+ Fractions (\begin { DoxyParamCaption} \item [{const std\+::unordered\+\_\+map$<$ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic\+::\+Species}}, double $>$ \&}] { mass\+ Fractions\+ Map} { } \end { DoxyParamCaption} )}
2025-11-27 17:47:38 -05:00
2026-05-18 10:08:43 -04:00
Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from a map of species to mass fractions.
2025-11-27 17:47:38 -05:00
\begin { DoxyParams} { Parameters}
{ \em mass\+ Fractions\+ Map} & The map of species to their corresponding mass fractions. \\
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2026-05-18 10:08:43 -04:00
A \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object constructed from the provided species and mass fractions.
2025-11-27 17:47:38 -05:00
\end { DoxyReturn}
\begin { DoxyExceptions} { Exceptions}
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ invalid_ composition_ error} { exceptions\+ ::\+ Invalid\+ Composition\+ Error} } & if the provided mass fractions do not sum to within one part in 10\texorpdfstring { $ ^ \wedge $ } { \string ^ } 10 of 1.\+ 0. \\
2025-11-27 17:47:38 -05:00
\hline
\end { DoxyExceptions}
2026-05-18 10:08:43 -04:00
Definition at line \mbox { \hyperlink { utils_ 8cpp_ source_ l00100} { 100} } of file \mbox { \hyperlink { utils_ 8cpp_ source} { utils.\+ cpp} } .
2025-11-27 17:47:38 -05:00
2026-05-18 10:08:43 -04:00
\Hypertarget { namespacefourdst_ 1_ 1composition_ abf844ad6e10524bf99fc3bf6c9d68465} \index { fourdst::composition@{ fourdst::composition} !buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} }
2025-11-27 17:47:38 -05:00
\index { buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} !fourdst::composition@{ fourdst::composition} }
\doxysubsubsection { \texorpdfstring { buildCompositionFromMassFractions()} { buildCompositionFromMassFractions()} \hspace { 0.1cm} { \footnotesize \ttfamily [3/7]} }
2026-05-18 10:08:43 -04:00
{ \footnotesize \ttfamily \label { namespacefourdst_ 1_ 1composition_ abf844ad6e10524bf99fc3bf6c9d68465}
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } fourdst\+ ::composition\+ ::build\+ Composition\+ From\+ Mass\+ Fractions (\begin { DoxyParamCaption} \item [{const std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&}] { mass\+ Fractions} { } \end { DoxyParamCaption} )}
2025-11-27 17:47:38 -05:00
2026-05-18 10:08:43 -04:00
Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from a map of species to mass fractions.
2025-11-27 17:47:38 -05:00
\begin { DoxyParams} { Parameters}
{ \em mass\+ Fractions} & The map of species to their corresponding mass fractions. \\
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2026-05-18 10:08:43 -04:00
A \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object constructed from the provided species and mass fractions.
2025-11-27 17:47:38 -05:00
\end { DoxyReturn}
\begin { DoxyExceptions} { Exceptions}
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ invalid_ composition_ error} { exceptions\+ ::\+ Invalid\+ Composition\+ Error} } & if the provided mass fractions do not sum to within one part in 10\texorpdfstring { $ ^ \wedge $ } { \string ^ } 10 of 1.\+ 0. \\
2025-11-27 17:47:38 -05:00
\hline
\end { DoxyExceptions}
2026-05-18 10:08:43 -04:00
Definition at line \mbox { \hyperlink { utils_ 8cpp_ source_ l00163} { 163} } of file \mbox { \hyperlink { utils_ 8cpp_ source} { utils.\+ cpp} } .
2025-11-27 17:47:38 -05:00
2026-05-18 10:08:43 -04:00
\Hypertarget { namespacefourdst_ 1_ 1composition_ a39d4f84dfa85ddda3b9feb5dda1afc1e} \index { fourdst::composition@{ fourdst::composition} !buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} }
2025-11-08 06:42:51 -05:00
\index { buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} !fourdst::composition@{ fourdst::composition} }
2025-11-27 17:47:38 -05:00
\doxysubsubsection { \texorpdfstring { buildCompositionFromMassFractions()} { buildCompositionFromMassFractions()} \hspace { 0.1cm} { \footnotesize \ttfamily [4/7]} }
2026-05-18 10:08:43 -04:00
{ \footnotesize \ttfamily \label { namespacefourdst_ 1_ 1composition_ a39d4f84dfa85ddda3b9feb5dda1afc1e}
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } fourdst\+ ::composition\+ ::build\+ Composition\+ From\+ Mass\+ Fractions (\begin { DoxyParamCaption} \item [{const std\+::vector$<$ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic\+::\+Species}} $>$ \&}] { species} { , } \item [{const std\+::vector$<$ double $>$ \&}] { mass\+ Fractions} { } \end { DoxyParamCaption} )}
2025-11-08 06:42:51 -05:00
2026-05-18 10:08:43 -04:00
Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from species and their corresponding mass fractions.
2025-07-24 09:35:52 -04:00
\begin { DoxyParams} { Parameters}
2025-11-08 06:42:51 -05:00
{ \em species} & The species to register. \\
2025-07-24 09:35:52 -04:00
\hline
2025-11-08 06:42:51 -05:00
{ \em mass\+ Fractions} & The corresponding mass fractions for each species. \\
2025-07-24 09:35:52 -04:00
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2026-05-18 10:08:43 -04:00
A \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object constructed from the provided species and mass fractions.
2025-07-24 09:35:52 -04:00
\end { DoxyReturn}
2025-11-08 06:42:51 -05:00
\begin { DoxyExceptions} { Exceptions}
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ invalid_ composition_ error} { exceptions\+ ::\+ Invalid\+ Composition\+ Error} } & if the provided mass fractions do not sum to within one part in 10\texorpdfstring { $ ^ \wedge $ } { \string ^ } 10 of 1.\+ 0. \\
2025-11-08 06:42:51 -05:00
\hline
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ invalid_ composition_ error} { exceptions\+ ::\+ Invalid\+ Composition\+ Error} } & if the number of species does not match the number of mass fractions. \\
2025-11-08 06:42:51 -05:00
\hline
\end { DoxyExceptions}
2026-05-18 10:08:43 -04:00
Definition at line \mbox { \hyperlink { utils_ 8cpp_ source_ l00063} { 63} } of file \mbox { \hyperlink { utils_ 8cpp_ source} { utils.\+ cpp} } .
2025-11-08 06:42:51 -05:00
2026-05-18 10:08:43 -04:00
\Hypertarget { namespacefourdst_ 1_ 1composition_ aa90b1ef07d607c0c829bedccf381cf54} \index { fourdst::composition@{ fourdst::composition} !buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} }
2025-11-08 06:42:51 -05:00
\index { buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} !fourdst::composition@{ fourdst::composition} }
2025-11-27 17:47:38 -05:00
\doxysubsubsection { \texorpdfstring { buildCompositionFromMassFractions()} { buildCompositionFromMassFractions()} \hspace { 0.1cm} { \footnotesize \ttfamily [5/7]} }
2026-05-18 10:08:43 -04:00
{ \footnotesize \ttfamily \label { namespacefourdst_ 1_ 1composition_ aa90b1ef07d607c0c829bedccf381cf54}
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } fourdst\+ ::composition\+ ::build\+ Composition\+ From\+ Mass\+ Fractions (\begin { DoxyParamCaption} \item [{const std\+::vector$<$ std\+::string $>$ \&}] { symbols} { , } \item [{const std\+::vector$<$ double $>$ \&}] { mass\+ Fractions} { } \end { DoxyParamCaption} )}
2025-11-08 06:42:51 -05:00
2025-07-24 09:35:52 -04:00
2026-05-18 10:08:43 -04:00
Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from symbols and their corresponding mass fractions.
2025-11-08 06:42:51 -05:00
\begin { DoxyParams} { Parameters}
{ \em symbols} & The symbols to register. \\
\hline
{ \em mass\+ Fractions} & The corresponding mass fractions for each symbol. \\
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2026-05-18 10:08:43 -04:00
A \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object constructed from the provided symbols and mass fractions.
2025-11-08 06:42:51 -05:00
\end { DoxyReturn}
\begin { DoxyExceptions} { Exceptions}
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ unknown_ symbol_ error} { exceptions\+ ::\+ Unknown\+ Symbol\+ Error} } & if any symbol is invalid. Symbols are invalid if they are not registered at compile time in the atomic species database ({ \ttfamily \doxylink { species_ 8h} { fourdst/atomic/species.\+ h} } ). \\
2025-11-08 06:42:51 -05:00
\hline
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ invalid_ composition_ error} { exceptions\+ ::\+ Invalid\+ Composition\+ Error} } & if the provided mass fractions do not sum to within one part in 10\texorpdfstring { $ ^ \wedge $ } { \string ^ } 10 of 1.\+ 0. \\
2025-11-08 06:42:51 -05:00
\hline
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ invalid_ composition_ error} { exceptions\+ ::\+ Invalid\+ Composition\+ Error} } & if the number of symbols does not match the number of mass fractions. \\
2025-11-08 06:42:51 -05:00
\hline
\end { DoxyExceptions}
2026-05-18 10:08:43 -04:00
Definition at line \mbox { \hyperlink { utils_ 8cpp_ source_ l00077} { 77} } of file \mbox { \hyperlink { utils_ 8cpp_ source} { utils.\+ cpp} } .
2025-11-08 06:42:51 -05:00
2026-05-18 10:08:43 -04:00
\Hypertarget { namespacefourdst_ 1_ 1composition_ a8163289e584a05b4075c775279761e55} \index { fourdst::composition@{ fourdst::composition} !buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} }
2025-11-27 17:47:38 -05:00
\index { buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} !fourdst::composition@{ fourdst::composition} }
\doxysubsubsection { \texorpdfstring { buildCompositionFromMassFractions()} { buildCompositionFromMassFractions()} \hspace { 0.1cm} { \footnotesize \ttfamily [6/7]} }
2026-05-18 10:08:43 -04:00
{ \footnotesize \ttfamily \label { namespacefourdst_ 1_ 1composition_ a8163289e584a05b4075c775279761e55}
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } fourdst\+ ::composition\+ ::build\+ Composition\+ From\+ Mass\+ Fractions (\begin { DoxyParamCaption} \item [{std\+::map$<$ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic\+::\+Species}}, double $>$}] { mass\+ Fractions} { } \end { DoxyParamCaption} )}
2025-11-27 17:47:38 -05:00
2026-05-18 10:08:43 -04:00
Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from a map of species to mass fractions.
2025-11-27 17:47:38 -05:00
\begin { DoxyParams} { Parameters}
{ \em mass\+ Fractions} & The map of species to their corresponding mass fractions. \\
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2026-05-18 10:08:43 -04:00
A \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object constructed from the provided species and mass fractions.
2025-11-27 17:47:38 -05:00
\end { DoxyReturn}
\begin { DoxyExceptions} { Exceptions}
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ invalid_ composition_ error} { exceptions\+ ::\+ Invalid\+ Composition\+ Error} } & if the provided mass fractions do not sum to within one part in 10\texorpdfstring { $ ^ \wedge $ } { \string ^ } 10 of 1.\+ 0. \\
2025-11-27 17:47:38 -05:00
\hline
\end { DoxyExceptions}
2026-05-18 10:08:43 -04:00
Definition at line \mbox { \hyperlink { utils_ 8cpp_ source_ l00120} { 120} } of file \mbox { \hyperlink { utils_ 8cpp_ source} { utils.\+ cpp} } .
2025-11-27 17:47:38 -05:00
2026-05-18 10:08:43 -04:00
\Hypertarget { namespacefourdst_ 1_ 1composition_ abd0e185f7fd52130f36414faf2dc07d7} \index { fourdst::composition@{ fourdst::composition} !buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} }
2025-11-27 17:47:38 -05:00
\index { buildCompositionFromMassFractions@{ buildCompositionFromMassFractions} !fourdst::composition@{ fourdst::composition} }
\doxysubsubsection { \texorpdfstring { buildCompositionFromMassFractions()} { buildCompositionFromMassFractions()} \hspace { 0.1cm} { \footnotesize \ttfamily [7/7]} }
2026-05-18 10:08:43 -04:00
{ \footnotesize \ttfamily \label { namespacefourdst_ 1_ 1composition_ abd0e185f7fd52130f36414faf2dc07d7}
\mbox { \hyperlink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} } fourdst\+ ::composition\+ ::build\+ Composition\+ From\+ Mass\+ Fractions (\begin { DoxyParamCaption} \item [{std\+::map$<$ std\+::string, double $>$}] { mass\+ Fractions} { } \end { DoxyParamCaption} )}
2025-11-27 17:47:38 -05:00
2026-05-18 10:08:43 -04:00
Build a \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object from a map of species to mass fractions.
2025-11-27 17:47:38 -05:00
\begin { DoxyParams} { Parameters}
{ \em mass\+ Fractions} & The map of species to their corresponding mass fractions. \\
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2026-05-18 10:08:43 -04:00
A \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} object constructed from the provided species and mass fractions.
2025-11-27 17:47:38 -05:00
\end { DoxyReturn}
\begin { DoxyExceptions} { Exceptions}
2026-05-18 10:08:43 -04:00
{ \em \doxylink { classfourdst_ 1_ 1composition_ 1_ 1exceptions_ 1_ 1_ invalid_ composition_ error} { exceptions\+ ::\+ Invalid\+ Composition\+ Error} } & if the provided mass fractions do not sum to within one part in 10\texorpdfstring { $ ^ \wedge $ } { \string ^ } 10 of 1.\+ 0. \\
2025-11-27 17:47:38 -05:00
\hline
\end { DoxyExceptions}
2026-05-18 10:08:43 -04:00
Definition at line \mbox { \hyperlink { utils_ 8cpp_ source_ l00134} { 134} } of file \mbox { \hyperlink { utils_ 8cpp_ source} { utils.\+ cpp} } .
2025-11-27 17:47:38 -05:00
2026-05-18 10:08:43 -04:00
\Hypertarget { namespacefourdst_ 1_ 1composition_ adcc2e4ca25ab7b93983730fc78f4deea} \index { fourdst::composition@{ fourdst::composition} !getSpecies@{ getSpecies} }
\index { getSpecies@{ getSpecies} !fourdst::composition@{ fourdst::composition} }
\doxysubsubsection { \texorpdfstring { getSpecies()} { getSpecies()} }
{ \footnotesize \ttfamily \label { namespacefourdst_ 1_ 1composition_ adcc2e4ca25ab7b93983730fc78f4deea}
std\+ ::optional$ < $ \mbox { \hyperlink { structfourdst_ 1_ 1atomic_ 1_ 1_ species} { fourdst\+ ::atomic\+ ::\+ Species} } $ > $ fourdst\+ ::composition\+ ::get\+ Species (\begin { DoxyParamCaption} \item [{const std\+::string \&}] { symbol} { } \end { DoxyParamCaption} )}
2025-11-08 06:42:51 -05:00
2025-07-24 09:35:52 -04:00
2026-05-18 10:08:43 -04:00
Definition at line \mbox { \hyperlink { utils_ 8cpp_ source_ l00189} { 189} } of file \mbox { \hyperlink { utils_ 8cpp_ source} { utils.\+ cpp} } .
2025-11-08 06:42:51 -05:00
2026-05-18 10:08:43 -04:00
\Hypertarget { namespacefourdst_ 1_ 1composition_ a5e8ccc2bd9e91eebcd3ef5fe470163a1} \index { fourdst::composition@{ fourdst::composition} !operator$ < $ $ < $ @{ operator$ < $ $ < $ } }
\index { operator$ < $ $ < $ @{ operator$ < $ $ < $ } !fourdst::composition@{ fourdst::composition} }
\doxysubsubsection { \texorpdfstring { operator$ < $ $ < $ ()} { operator<<()} }
{ \footnotesize \ttfamily \label { namespacefourdst_ 1_ 1composition_ a5e8ccc2bd9e91eebcd3ef5fe470163a1}
std\+ ::ostream \& fourdst\+ ::composition\+ ::operator$ < $ $ < $ (\begin { DoxyParamCaption} \item [{std\+::ostream \&}] { os} { , } \item [{const \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition}{Composition}} \&}] { composition} { } \end { DoxyParamCaption} )}
2025-11-08 06:42:51 -05:00
\begin { DoxyParams} { Parameters}
{ \em os} & The output stream. \\
\hline
2026-05-18 10:08:43 -04:00
{ \em composition} & The \doxylink { classfourdst_ 1_ 1composition_ 1_ 1_ composition} { Composition} to output. \\
2025-11-08 06:42:51 -05:00
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
The output stream.
\end { DoxyReturn}
2025-07-24 09:35:52 -04:00
2026-05-18 10:08:43 -04:00
Definition at line \mbox { \hyperlink { composition_ 8cpp_ source_ l00746} { 746} } of file \mbox { \hyperlink { composition_ 8cpp_ source} { composition.\+ cpp} } .
2025-11-27 17:47:38 -05:00
2026-05-18 10:08:43 -04:00
\Hypertarget { namespacefourdst_ 1_ 1composition_ a06f5abc74104de40349e47ad367c402a} \index { fourdst::composition@{ fourdst::composition} !operator==@{ operator==} }
2025-11-27 17:47:38 -05:00
\index { operator==@{ operator==} !fourdst::composition@{ fourdst::composition} }
\doxysubsubsection { \texorpdfstring { operator==()} { operator==()} }
2026-05-18 10:08:43 -04:00
{ \footnotesize \ttfamily \label { namespacefourdst_ 1_ 1composition_ a06f5abc74104de40349e47ad367c402a}
bool fourdst\+ ::composition\+ ::operator== (\begin { DoxyParamCaption} \item [{const \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition}{Composition}} \&}] { a} { , } \item [{const \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition}{Composition}} \&}] { b} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [inline]} , { \ttfamily [noexcept]} }
2025-11-27 17:47:38 -05:00
2026-05-18 10:08:43 -04:00
Definition at line \mbox { \hyperlink { composition_ 8h_ source_ l00858} { 858} } of file \mbox { \hyperlink { composition_ 8h_ source} { composition.\+ h} } .
2025-07-24 09:35:52 -04:00