528 lines
44 KiB
TeX
528 lines
44 KiB
TeX
\doxysection{fourdst\+::composition Namespace Reference}
|
||
\hypertarget{namespacefourdst_1_1composition}{}\label{namespacefourdst_1_1composition}\index{fourdst::composition@{fourdst::composition}}
|
||
|
||
|
||
Utilities and types for representing and manipulating chemical compositions.
|
||
|
||
|
||
\doxysubsubsection*{Namespaces}
|
||
\begin{DoxyCompactItemize}
|
||
\item
|
||
namespace \mbox{\hyperlink{namespacefourdst_1_1composition_1_1detail}{detail}}
|
||
\item
|
||
namespace \mbox{\hyperlink{namespacefourdst_1_1composition_1_1exceptions}{exceptions}}
|
||
\item
|
||
namespace \mbox{\hyperlink{namespacefourdst_1_1composition_1_1io}{io}}
|
||
\item
|
||
namespace \mbox{\hyperlink{namespacefourdst_1_1composition_1_1utils}{utils}}
|
||
\end{DoxyCompactItemize}
|
||
\doxysubsubsection*{Classes}
|
||
\begin{DoxyCompactItemize}
|
||
\item
|
||
struct \mbox{\hyperlink{structfourdst_1_1composition_1_1_canonical_composition}{Canonical\+Composition}}
|
||
\begin{DoxyCompactList}\small\item\em Represents the canonical (X, Y, Z) composition of stellar material. \end{DoxyCompactList}\item
|
||
class \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition}{Composition}}
|
||
\begin{DoxyCompactList}\small\item\em Manages a collection of chemical species and their abundances. \end{DoxyCompactList}\item
|
||
class \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_abstract}{Composition\+Abstract}}
|
||
\begin{DoxyCompactList}\small\item\em Abstract base class for chemical composition representations. \end{DoxyCompactList}\item
|
||
class \mbox{\hyperlink{classfourdst_1_1composition_1_1_composition_decorator}{Composition\+Decorator}}
|
||
\item
|
||
class \mbox{\hyperlink{classfourdst_1_1composition_1_1_masked_composition}{Masked\+Composition}}
|
||
\end{DoxyCompactItemize}
|
||
\doxysubsubsection*{Functions}
|
||
\begin{DoxyCompactItemize}
|
||
\item
|
||
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_a708d71303db2fa22c8871f3bfc3d11d4}{get\+\_\+composition\+\_\+record}} (const std\+::string \&metal\+\_\+fraction\+\_\+scheme, const std\+::string \&isotopic\+\_\+percentage\+\_\+scheme, double initial\+\_\+z, double initial\+\_\+y)
|
||
\begin{DoxyCompactList}\small\item\em Constructs a stellar {\ttfamily \doxylink{classfourdst_1_1composition_1_1_composition}{Composition}} from a named solar metal-\/fraction scheme and isotopic-\/percentage table, scaled to the supplied bulk hydrogen and helium mass fractions. \end{DoxyCompactList}\item
|
||
\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition}{Composition}} \mbox{\hyperlink{namespacefourdst_1_1composition_aad96edce7a144f1d73e62f622f3063de}{get\+\_\+composition\+\_\+record}} (\mbox{\hyperlink{namespacefourdst_1_1composition_1_1io_a2cd2f870d30e26ed92265cb2d74d40d3}{io\+::\+Solar\+Compositions}} metal\+\_\+fraction\+\_\+scheme, \mbox{\hyperlink{namespacefourdst_1_1composition_1_1io_aaaa91e1b71ac0285d0bcdbd5abf4f381}{io\+::\+Isotopic\+Percentages}} isotopic\+\_\+percentage\+\_\+scheme, double initial\+\_\+z, double initial\+\_\+y)
|
||
\begin{DoxyCompactList}\small\item\em Enum-\/based overload of {\ttfamily \doxylink{namespacefourdst_1_1composition_a708d71303db2fa22c8871f3bfc3d11d4}{get\+\_\+composition\+\_\+record()}}. \end{DoxyCompactList}\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)
|
||
\item
|
||
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}
|
||
|
||
|
||
\doxysubsection{Detailed Description}
|
||
Utilities and types for representing and manipulating chemical compositions.
|
||
|
||
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).
|
||
|
||
Key concepts\+:
|
||
\begin{DoxyItemize}
|
||
\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.
|
||
\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}
|
||
\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).
|
||
|
||
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}
|
||
\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}.
|
||
\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.
|
||
\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.
|
||
\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{}
|
||
\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);}
|
||
\DoxyCodeLine{}
|
||
\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}}();}
|
||
\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\ "{}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\};}
|
||
\DoxyCodeLine{\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition}{Composition}}\ comp\ =\ \mbox{\hyperlink{namespacefourdst_1_1composition_aa90b1ef07d607c0c829bedccf381cf54}{buildCompositionFromMassFractions}}(symbols,\ massFractions);}
|
||
|
||
\end{DoxyCode}
|
||
\hypertarget{namespacefourdst_1_1composition_autotoc_md8}{}\doxysubsubsection{\texorpdfstring{Notes and remarks}{Notes and remarks}}\label{namespacefourdst_1_1composition_autotoc_md8}
|
||
|
||
\begin{DoxyItemize}
|
||
\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.
|
||
\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.
|
||
\item \doxylink{composition_8h}{fourdst/composition/composition.\+h} — concrete \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} implementation.
|
||
\item \doxylink{composition__abstract_8h}{fourdst/composition/composition\+\_\+abstract.\+h} — abstract composition interface.
|
||
\item fourdst/composition/utils.\+h — helpers for constructing compositions from mass fractions.
|
||
\end{DoxyItemize}
|
||
|
||
\doxysubsection{Function Documentation}
|
||
\Hypertarget{namespacefourdst_1_1composition_a2cb98194b465f646973ceba38d0e7d95}\index{fourdst::composition@{fourdst::composition}!buildCompositionFromMassFractions@{buildCompositionFromMassFractions}}
|
||
\index{buildCompositionFromMassFractions@{buildCompositionFromMassFractions}!fourdst::composition@{fourdst::composition}}
|
||
\doxysubsubsection{\texorpdfstring{buildCompositionFromMassFractions()}{buildCompositionFromMassFractions()}\hspace{0.1cm}{\footnotesize\ttfamily [1/7]}}
|
||
{\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})}
|
||
|
||
|
||
|
||
Build a \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object from species in a set and their corresponding mass fractions.
|
||
|
||
|
||
\begin{DoxyParams}{Parameters}
|
||
{\em species} & The species to register. \\
|
||
\hline
|
||
{\em mass\+Fractions} & The corresponding mass fractions for each species. \\
|
||
\hline
|
||
\end{DoxyParams}
|
||
\begin{DoxyReturn}{Returns}
|
||
A \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object constructed from the provided species and mass fractions.
|
||
\end{DoxyReturn}
|
||
|
||
\begin{DoxyExceptions}{Exceptions}
|
||
{\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. \\
|
||
\hline
|
||
{\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.\\
|
||
\hline
|
||
\end{DoxyExceptions}
|
||
\begin{DoxyNote}{Note}
|
||
This is the version of the function which the other overloads ultimately call.
|
||
\end{DoxyNote}
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{utils_8cpp_source_l00029}{29}} of file \mbox{\hyperlink{utils_8cpp_source}{utils.\+cpp}}.
|
||
|
||
\Hypertarget{namespacefourdst_1_1composition_ada2fea5f3ac5cff3ecd67541a0a094fc}\index{fourdst::composition@{fourdst::composition}!buildCompositionFromMassFractions@{buildCompositionFromMassFractions}}
|
||
\index{buildCompositionFromMassFractions@{buildCompositionFromMassFractions}!fourdst::composition@{fourdst::composition}}
|
||
\doxysubsubsection{\texorpdfstring{buildCompositionFromMassFractions()}{buildCompositionFromMassFractions()}\hspace{0.1cm}{\footnotesize\ttfamily [2/7]}}
|
||
{\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})}
|
||
|
||
|
||
|
||
Build a \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object from a map of species to mass fractions.
|
||
|
||
|
||
\begin{DoxyParams}{Parameters}
|
||
{\em mass\+Fractions\+Map} & The map of species to their corresponding mass fractions. \\
|
||
\hline
|
||
\end{DoxyParams}
|
||
\begin{DoxyReturn}{Returns}
|
||
A \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object constructed from the provided species and mass fractions.
|
||
\end{DoxyReturn}
|
||
|
||
\begin{DoxyExceptions}{Exceptions}
|
||
{\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. \\
|
||
\hline
|
||
\end{DoxyExceptions}
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{utils_8cpp_source_l00100}{100}} of file \mbox{\hyperlink{utils_8cpp_source}{utils.\+cpp}}.
|
||
|
||
\Hypertarget{namespacefourdst_1_1composition_abf844ad6e10524bf99fc3bf6c9d68465}\index{fourdst::composition@{fourdst::composition}!buildCompositionFromMassFractions@{buildCompositionFromMassFractions}}
|
||
\index{buildCompositionFromMassFractions@{buildCompositionFromMassFractions}!fourdst::composition@{fourdst::composition}}
|
||
\doxysubsubsection{\texorpdfstring{buildCompositionFromMassFractions()}{buildCompositionFromMassFractions()}\hspace{0.1cm}{\footnotesize\ttfamily [3/7]}}
|
||
{\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})}
|
||
|
||
|
||
|
||
Build a \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object from a map of species to mass fractions.
|
||
|
||
|
||
\begin{DoxyParams}{Parameters}
|
||
{\em mass\+Fractions} & The map of species to their corresponding mass fractions. \\
|
||
\hline
|
||
\end{DoxyParams}
|
||
\begin{DoxyReturn}{Returns}
|
||
A \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object constructed from the provided species and mass fractions.
|
||
\end{DoxyReturn}
|
||
|
||
\begin{DoxyExceptions}{Exceptions}
|
||
{\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. \\
|
||
\hline
|
||
\end{DoxyExceptions}
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{utils_8cpp_source_l00163}{163}} of file \mbox{\hyperlink{utils_8cpp_source}{utils.\+cpp}}.
|
||
|
||
\Hypertarget{namespacefourdst_1_1composition_a39d4f84dfa85ddda3b9feb5dda1afc1e}\index{fourdst::composition@{fourdst::composition}!buildCompositionFromMassFractions@{buildCompositionFromMassFractions}}
|
||
\index{buildCompositionFromMassFractions@{buildCompositionFromMassFractions}!fourdst::composition@{fourdst::composition}}
|
||
\doxysubsubsection{\texorpdfstring{buildCompositionFromMassFractions()}{buildCompositionFromMassFractions()}\hspace{0.1cm}{\footnotesize\ttfamily [4/7]}}
|
||
{\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})}
|
||
|
||
|
||
|
||
Build a \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object from species and their corresponding mass fractions.
|
||
|
||
|
||
\begin{DoxyParams}{Parameters}
|
||
{\em species} & The species to register. \\
|
||
\hline
|
||
{\em mass\+Fractions} & The corresponding mass fractions for each species. \\
|
||
\hline
|
||
\end{DoxyParams}
|
||
\begin{DoxyReturn}{Returns}
|
||
A \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object constructed from the provided species and mass fractions.
|
||
\end{DoxyReturn}
|
||
|
||
\begin{DoxyExceptions}{Exceptions}
|
||
{\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. \\
|
||
\hline
|
||
{\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. \\
|
||
\hline
|
||
\end{DoxyExceptions}
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{utils_8cpp_source_l00063}{63}} of file \mbox{\hyperlink{utils_8cpp_source}{utils.\+cpp}}.
|
||
|
||
\Hypertarget{namespacefourdst_1_1composition_aa90b1ef07d607c0c829bedccf381cf54}\index{fourdst::composition@{fourdst::composition}!buildCompositionFromMassFractions@{buildCompositionFromMassFractions}}
|
||
\index{buildCompositionFromMassFractions@{buildCompositionFromMassFractions}!fourdst::composition@{fourdst::composition}}
|
||
\doxysubsubsection{\texorpdfstring{buildCompositionFromMassFractions()}{buildCompositionFromMassFractions()}\hspace{0.1cm}{\footnotesize\ttfamily [5/7]}}
|
||
{\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})}
|
||
|
||
|
||
|
||
Build a \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object from symbols and their corresponding mass fractions.
|
||
|
||
|
||
\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}
|
||
A \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object constructed from the provided symbols and mass fractions.
|
||
\end{DoxyReturn}
|
||
|
||
\begin{DoxyExceptions}{Exceptions}
|
||
{\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}}). \\
|
||
\hline
|
||
{\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. \\
|
||
\hline
|
||
{\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. \\
|
||
\hline
|
||
\end{DoxyExceptions}
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{utils_8cpp_source_l00077}{77}} of file \mbox{\hyperlink{utils_8cpp_source}{utils.\+cpp}}.
|
||
|
||
\Hypertarget{namespacefourdst_1_1composition_a8163289e584a05b4075c775279761e55}\index{fourdst::composition@{fourdst::composition}!buildCompositionFromMassFractions@{buildCompositionFromMassFractions}}
|
||
\index{buildCompositionFromMassFractions@{buildCompositionFromMassFractions}!fourdst::composition@{fourdst::composition}}
|
||
\doxysubsubsection{\texorpdfstring{buildCompositionFromMassFractions()}{buildCompositionFromMassFractions()}\hspace{0.1cm}{\footnotesize\ttfamily [6/7]}}
|
||
{\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})}
|
||
|
||
|
||
|
||
Build a \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object from a map of species to mass fractions.
|
||
|
||
|
||
\begin{DoxyParams}{Parameters}
|
||
{\em mass\+Fractions} & The map of species to their corresponding mass fractions. \\
|
||
\hline
|
||
\end{DoxyParams}
|
||
\begin{DoxyReturn}{Returns}
|
||
A \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object constructed from the provided species and mass fractions.
|
||
\end{DoxyReturn}
|
||
|
||
\begin{DoxyExceptions}{Exceptions}
|
||
{\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. \\
|
||
\hline
|
||
\end{DoxyExceptions}
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{utils_8cpp_source_l00120}{120}} of file \mbox{\hyperlink{utils_8cpp_source}{utils.\+cpp}}.
|
||
|
||
\Hypertarget{namespacefourdst_1_1composition_abd0e185f7fd52130f36414faf2dc07d7}\index{fourdst::composition@{fourdst::composition}!buildCompositionFromMassFractions@{buildCompositionFromMassFractions}}
|
||
\index{buildCompositionFromMassFractions@{buildCompositionFromMassFractions}!fourdst::composition@{fourdst::composition}}
|
||
\doxysubsubsection{\texorpdfstring{buildCompositionFromMassFractions()}{buildCompositionFromMassFractions()}\hspace{0.1cm}{\footnotesize\ttfamily [7/7]}}
|
||
{\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})}
|
||
|
||
|
||
|
||
Build a \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object from a map of species to mass fractions.
|
||
|
||
|
||
\begin{DoxyParams}{Parameters}
|
||
{\em mass\+Fractions} & The map of species to their corresponding mass fractions. \\
|
||
\hline
|
||
\end{DoxyParams}
|
||
\begin{DoxyReturn}{Returns}
|
||
A \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} object constructed from the provided species and mass fractions.
|
||
\end{DoxyReturn}
|
||
|
||
\begin{DoxyExceptions}{Exceptions}
|
||
{\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. \\
|
||
\hline
|
||
\end{DoxyExceptions}
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{utils_8cpp_source_l00134}{134}} of file \mbox{\hyperlink{utils_8cpp_source}{utils.\+cpp}}.
|
||
|
||
\Hypertarget{namespacefourdst_1_1composition_a708d71303db2fa22c8871f3bfc3d11d4}\index{fourdst::composition@{fourdst::composition}!get\_composition\_record@{get\_composition\_record}}
|
||
\index{get\_composition\_record@{get\_composition\_record}!fourdst::composition@{fourdst::composition}}
|
||
\doxysubsubsection{\texorpdfstring{get\_composition\_record()}{get\_composition\_record()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
|
||
{\footnotesize\ttfamily \label{namespacefourdst_1_1composition_a708d71303db2fa22c8871f3bfc3d11d4}
|
||
\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition}{Composition}} fourdst\+::composition\+::get\+\_\+composition\+\_\+record (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{metal\+\_\+fraction\+\_\+scheme}{, }\item[{const std\+::string \&}]{isotopic\+\_\+percentage\+\_\+scheme}{, }\item[{double}]{initial\+\_\+z}{, }\item[{double}]{initial\+\_\+y}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
||
|
||
|
||
|
||
Constructs a stellar {\ttfamily \doxylink{classfourdst_1_1composition_1_1_composition}{Composition}} from a named solar metal-\/fraction scheme and isotopic-\/percentage table, scaled to the supplied bulk hydrogen and helium mass fractions.
|
||
|
||
Available metal fraction schemes (extracted from MESA {\ttfamily chem\+\_\+def.\+f90})\+:
|
||
\begin{DoxyItemize}
|
||
\item {\ttfamily AG89} (Anders \& Grevesse 1989)
|
||
\item {\ttfamily GN93} (Grevesse \& Noels 1993)
|
||
\item {\ttfamily GS98} (Grevesse \& Sauval 1998)
|
||
\item {\ttfamily L03} (Lodders 2003)
|
||
\item {\ttfamily AGS05} (Asplund, Grevesse \& Sauval 2005)
|
||
\item {\ttfamily AGSS09} (Asplund et al. 2009)
|
||
\item {\ttfamily A09\+\_\+\+Przybilla}
|
||
\item {\ttfamily MB22\+\_\+photospheric}
|
||
\item {\ttfamily AAG21\+\_\+photospheric}
|
||
\item {\ttfamily L09} (Lodders 2009)
|
||
\end{DoxyItemize}
|
||
|
||
Available isotopic percentage schemes\+:
|
||
\begin{DoxyItemize}
|
||
\item {\ttfamily L03\+\_\+data} (Lodders 2003)
|
||
\item {\ttfamily L09\+\_\+data} (Lodders 2009)
|
||
\end{DoxyItemize}
|
||
|
||
{\bfseries{Algorithm\+:}}
|
||
\begin{DoxyEnumerate}
|
||
\item {\bfseries{Data loading}} — The embedded binary {\ttfamily Standard\+Metal\+Fractions} is copied into a {\ttfamily std\+::vector\texorpdfstring{$<$}{<}char\texorpdfstring{$>$}{>}} and parsed twice\+: once for {\ttfamily metal\+\_\+fraction\+\_\+scheme} and once for {\ttfamily isotopic\+\_\+percentage\+\_\+scheme}.
|
||
\item {\bfseries{Species list}} — The isotope table is iterated; any isotope whose element appears in the metals list or is {\ttfamily "{}\+H"{}} / {\ttfamily "{}\+He"{}} is looked up in the global {\ttfamily \doxylink{namespacefourdst_1_1atomic_a3f619cc8f8b2cd718a4082c6adb0de90}{atomic\+::species}} registry by {\ttfamily "{}$<$\+Element$>$-\/$<$\+A$>$"{}} and added to the list.
|
||
\item {\bfseries{H and He mass fractions}} — Four entries are prepended (H-\/1, H-\/2, He-\/3, He-\/4) using Anders \& Grevesse (1989) solar He3/\+He4 ratio\+:
|
||
\begin{DoxyItemize}
|
||
\item X(H-\/1) = clamp(1 -\/ Z -\/ Y, 0, 1)
|
||
\item X(H-\/2) = 0
|
||
\item X(He-\/3) = Y \texorpdfstring{$\ast$}{*} xsol\+\_\+\+He3 / (xsol\+\_\+\+He3 + xsol\+\_\+\+He4)
|
||
\item X(He-\/4) = Y \texorpdfstring{$\ast$}{*} xsol\+\_\+\+He4 / (xsol\+\_\+\+He3 + xsol\+\_\+\+He4) where xsol\+\_\+\+He3 = 2.\+9291e-\/5 and xsol\+\_\+\+He4 = 2.\+7521e-\/1.
|
||
\end{DoxyItemize}
|
||
\item {\bfseries{Atomic-\/weight weighting}} — When {\ttfamily Composition\+Data\+::requires\+\_\+atomic\+\_\+weight} is {\ttfamily true}, each metal\textquotesingle{}s number-\/fraction abundance is multiplied by the atomic mass of its most-\/abundant isotope (determined from the isotopic table).
|
||
\item {\bfseries{Normalisation}} — Metal fractions are summed and normalised to unity.
|
||
\item {\bfseries{Isotope distribution}} — Per-\/isotope mass fractions are computed as\+: X\+\_\+i = Z\+\_\+total \texorpdfstring{$\ast$}{*} f\+\_\+E \texorpdfstring{$\ast$}{*} (p\+\_\+i \texorpdfstring{$\ast$}{*} m\+\_\+i) / sum\+\_\+j(p\+\_\+j \texorpdfstring{$\ast$}{*} m\+\_\+j) where f\+\_\+E is the normalised metal fraction, p\+\_\+i the isotopic percentage (0-\/100 scale), and m\+\_\+i the isotope\textquotesingle{}s atomic mass.
|
||
\item {\bfseries{Renormalisation}} — Metal mass fractions are rescaled so their sum equals Z\+\_\+total exactly.
|
||
\item {\bfseries{Assembly}} — {\ttfamily build\+Composition\+From\+Mass\+Fractions(species, mass\+Fracs)} builds the final {\ttfamily \doxylink{classfourdst_1_1composition_1_1_composition}{Composition}} object.
|
||
\end{DoxyEnumerate}
|
||
|
||
|
||
\begin{DoxyParams}[1]{Parameters}
|
||
\mbox{\texttt{ in}} & {\em metal\+\_\+fraction\+\_\+scheme} & Block tag of the desired solar metal composition (e.\+g., {\ttfamily "{}\+GS98"{}}, {\ttfamily "{}\+AGSS09"{}}). Case-\/sensitive; must match a {\ttfamily BEGIN}/{\ttfamily END} tag in the embedded data exactly. \\
|
||
\hline
|
||
\mbox{\texttt{ in}} & {\em isotopic\+\_\+percentage\+\_\+scheme} & Block tag of the isotopic percentage table (e.\+g., {\ttfamily "{}\+L03\+\_\+data"{}}, {\ttfamily "{}\+L09\+\_\+data"{}}). \\
|
||
\hline
|
||
\mbox{\texttt{ in}} & {\em initial\+\_\+z} & Total metal mass fraction Z (0 \texorpdfstring{$<$}{<}= Z \texorpdfstring{$<$}{<} 1). \\
|
||
\hline
|
||
\mbox{\texttt{ in}} & {\em initial\+\_\+y} & Total helium mass fraction Y (0 \texorpdfstring{$<$}{<}= Y \texorpdfstring{$<$}{<} 1, with X + Y + Z \texorpdfstring{$<$}{<}= 1 recommended). X(H-\/1) is clamped to \mbox{[}0, 1\mbox{]} if the constraint is violated.\\
|
||
\hline
|
||
\end{DoxyParams}
|
||
\begin{DoxyReturn}{Returns}
|
||
{\ttfamily \doxylink{classfourdst_1_1composition_1_1_composition}{Composition}} Fully populated composition object with per-\/isotope mass fractions normalised to {\ttfamily initial\+\_\+z} and {\ttfamily initial\+\_\+y}.
|
||
\end{DoxyReturn}
|
||
|
||
\begin{DoxyExceptions}{Exceptions}
|
||
{\em std\+::out\+\_\+of\+\_\+range} & If a species name derived from the isotopic table is absent from {\ttfamily \doxylink{namespacefourdst_1_1atomic_a3f619cc8f8b2cd718a4082c6adb0de90}{atomic\+::species}}, or if either scheme tag is not present in the embedded data. \\
|
||
\hline
|
||
{\em std\+::invalid\+\_\+argument} & If numeric fields in the embedded data are malformed (propagated from {\ttfamily std\+::stod} / {\ttfamily std\+::stoi}).\\
|
||
\hline
|
||
\end{DoxyExceptions}
|
||
\begin{DoxyParagraph}{Examples}
|
||
|
||
\begin{DoxyCode}{0}
|
||
\DoxyCodeLine{\textcolor{comment}{//\ Grevesse\ \&\ Sauval\ (1998)\ at\ Z\ =\ 0.02,\ Y\ =\ 0.28}}
|
||
\DoxyCodeLine{\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition}{fourdst::composition::Composition}}\ comp\ =}
|
||
\DoxyCodeLine{\ \ \ \ \mbox{\hyperlink{namespacefourdst_1_1composition_a708d71303db2fa22c8871f3bfc3d11d4}{fourdst::composition::get\_composition\_record}}(\textcolor{stringliteral}{"{}GS98"{}},\ \textcolor{stringliteral}{"{}L03\_data"{}},\ 0.02,\ 0.28);}
|
||
\DoxyCodeLine{}
|
||
\DoxyCodeLine{\textcolor{keywordtype}{double}\ x\_h1\ =\ comp.massFraction(\textcolor{stringliteral}{"{}H-\/1"{}});}
|
||
\DoxyCodeLine{std::println(\textcolor{stringliteral}{"{}X(H-\/1)\ =\ \{:.6f\}"{}},\ x\_h1);\ \ \textcolor{comment}{//\ approx\ 0.70}}
|
||
|
||
\end{DoxyCode}
|
||
|
||
\end{DoxyParagraph}
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{standard__compositions_8cpp_source_l00252}{252}} of file \mbox{\hyperlink{standard__compositions_8cpp_source}{standard\+\_\+compositions.\+cpp}}.
|
||
|
||
\Hypertarget{namespacefourdst_1_1composition_aad96edce7a144f1d73e62f622f3063de}\index{fourdst::composition@{fourdst::composition}!get\_composition\_record@{get\_composition\_record}}
|
||
\index{get\_composition\_record@{get\_composition\_record}!fourdst::composition@{fourdst::composition}}
|
||
\doxysubsubsection{\texorpdfstring{get\_composition\_record()}{get\_composition\_record()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
|
||
{\footnotesize\ttfamily \label{namespacefourdst_1_1composition_aad96edce7a144f1d73e62f622f3063de}
|
||
\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition}{Composition}} fourdst\+::composition\+::get\+\_\+composition\+\_\+record (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespacefourdst_1_1composition_1_1io_a2cd2f870d30e26ed92265cb2d74d40d3}{io\+::\+Solar\+Compositions}}}]{metal\+\_\+fraction\+\_\+scheme}{, }\item[{\mbox{\hyperlink{namespacefourdst_1_1composition_1_1io_aaaa91e1b71ac0285d0bcdbd5abf4f381}{io\+::\+Isotopic\+Percentages}}}]{isotopic\+\_\+percentage\+\_\+scheme}{, }\item[{double}]{initial\+\_\+z}{, }\item[{double}]{initial\+\_\+y}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
||
|
||
|
||
|
||
Enum-\/based overload of {\ttfamily \doxylink{namespacefourdst_1_1composition_a708d71303db2fa22c8871f3bfc3d11d4}{get\+\_\+composition\+\_\+record()}}.
|
||
|
||
Translates strongly-\/typed enum values to their canonical string representations via {\ttfamily Solar\+Compositions\+\_\+to\+\_\+string\+\_\+map} and {\ttfamily Isotopic\+Percentages\+\_\+to\+\_\+string\+\_\+map}, then delegates to the string-\/based overload. This overload is preferred as it prevents scheme name typos.
|
||
|
||
|
||
\begin{DoxyParams}[1]{Parameters}
|
||
\mbox{\texttt{ in}} & {\em metal\+\_\+fraction\+\_\+scheme} & Enum identifying the desired solar metal composition (e.\+g., {\ttfamily Solar\+Compositions\+::\+GS98}). \\
|
||
\hline
|
||
\mbox{\texttt{ in}} & {\em isotopic\+\_\+percentage\+\_\+scheme} & Enum identifying the isotopic percentage table (e.\+g., {\ttfamily Isotopic\+Percentages\+::\+L03}). \\
|
||
\hline
|
||
\mbox{\texttt{ in}} & {\em initial\+\_\+z} & Total metal mass fraction Z (0 \texorpdfstring{$<$}{<}= Z \texorpdfstring{$<$}{<} 1). \\
|
||
\hline
|
||
\mbox{\texttt{ in}} & {\em initial\+\_\+y} & Total helium mass fraction Y (0 \texorpdfstring{$<$}{<}= Y \texorpdfstring{$<$}{<} 1).\\
|
||
\hline
|
||
\end{DoxyParams}
|
||
\begin{DoxyReturn}{Returns}
|
||
{\ttfamily \doxylink{classfourdst_1_1composition_1_1_composition}{Composition}} Fully populated composition; see the string-\/based overload for the complete algorithm description.
|
||
\end{DoxyReturn}
|
||
|
||
\begin{DoxyExceptions}{Exceptions}
|
||
{\em std\+::out\+\_\+of\+\_\+range} & If the enum value is absent from its lookup map (should not occur with valid named enum members).\\
|
||
\hline
|
||
\end{DoxyExceptions}
|
||
\begin{DoxyParagraph}{Examples}
|
||
|
||
\begin{DoxyCode}{0}
|
||
\DoxyCodeLine{\textcolor{keyword}{using\ namespace\ }\mbox{\hyperlink{namespacefourdst_1_1composition}{fourdst::composition}};}
|
||
\DoxyCodeLine{\textcolor{keyword}{using\ namespace\ }\mbox{\hyperlink{namespacefourdst_1_1composition_1_1io}{fourdst::composition::io}};}
|
||
\DoxyCodeLine{}
|
||
\DoxyCodeLine{\textcolor{comment}{//\ Asplund\ et\ al.\ (2009)\ at\ proto-\/solar\ Z\ and\ Y}}
|
||
\DoxyCodeLine{\mbox{\hyperlink{classfourdst_1_1composition_1_1_composition}{Composition}}\ comp\ =\ \mbox{\hyperlink{namespacefourdst_1_1composition_a708d71303db2fa22c8871f3bfc3d11d4}{get\_composition\_record}}(}
|
||
\DoxyCodeLine{\ \ \ \ \mbox{\hyperlink{namespacefourdst_1_1composition_1_1io_a2cd2f870d30e26ed92265cb2d74d40d3a17c7e97c4d885537aac6da32b91d47ee}{SolarCompositions::AGSS09}},}
|
||
\DoxyCodeLine{\ \ \ \ \mbox{\hyperlink{namespacefourdst_1_1composition_1_1io_aaaa91e1b71ac0285d0bcdbd5abf4f381af205819a717ff6a23ec8e04854f3d9bb}{IsotopicPercentages::L09}},}
|
||
\DoxyCodeLine{\ \ \ \ 0.0134,\ 0.2485}
|
||
\DoxyCodeLine{);}
|
||
\DoxyCodeLine{}
|
||
\DoxyCodeLine{\textcolor{keywordtype}{double}\ x\_he4\ =\ comp.massFraction(\textcolor{stringliteral}{"{}He-\/4"{}});}
|
||
\DoxyCodeLine{std::println(\textcolor{stringliteral}{"{}X(He-\/4)\ =\ \{:.6f\}"{}},\ x\_he4);}
|
||
|
||
\end{DoxyCode}
|
||
|
||
\end{DoxyParagraph}
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{standard__compositions_8cpp_source_l00390}{390}} of file \mbox{\hyperlink{standard__compositions_8cpp_source}{standard\+\_\+compositions.\+cpp}}.
|
||
|
||
\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})}
|
||
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{utils_8cpp_source_l00189}{189}} of file \mbox{\hyperlink{utils_8cpp_source}{utils.\+cpp}}.
|
||
|
||
\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})}
|
||
|
||
|
||
\begin{DoxyParams}{Parameters}
|
||
{\em os} & The output stream. \\
|
||
\hline
|
||
{\em composition} & The \doxylink{classfourdst_1_1composition_1_1_composition}{Composition} to output. \\
|
||
\hline
|
||
\end{DoxyParams}
|
||
\begin{DoxyReturn}{Returns}
|
||
The output stream.
|
||
\end{DoxyReturn}
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{composition_8cpp_source_l00746}{746}} of file \mbox{\hyperlink{composition_8cpp_source}{composition.\+cpp}}.
|
||
|
||
\Hypertarget{namespacefourdst_1_1composition_a06f5abc74104de40349e47ad367c402a}\index{fourdst::composition@{fourdst::composition}!operator==@{operator==}}
|
||
\index{operator==@{operator==}!fourdst::composition@{fourdst::composition}}
|
||
\doxysubsubsection{\texorpdfstring{operator==()}{operator==()}}
|
||
{\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]}}
|
||
|
||
|
||
|
||
Definition at line \mbox{\hyperlink{composition_8h_source_l00858}{858}} of file \mbox{\hyperlink{composition_8h_source}{composition.\+h}}.
|
||
|