fourdst::libcomposition v2.3.1
Robust atomic species information library
Loading...
Searching...
No Matches
composition_decorator_abstract.h
Go to the documentation of this file.
1#pragma once
2
5
7
8#include <utility>
9#include <set>
10#include <unordered_map>
11#include <map>
12#include <vector>
13
14namespace fourdst::composition {
15
17 public:
18 explicit CompositionDecorator(std::unique_ptr<CompositionAbstract> decorator) : m_base_composition(std::move(decorator)) {};
19 [[nodiscard]] bool contains(const atomic::Species &species) const noexcept override { return m_base_composition->contains(species); };
20 [[nodiscard]] bool contains(const std::string& symbol) const override { return m_base_composition->contains(symbol); };
21 [[nodiscard]] size_t size() const noexcept override { return m_base_composition->size(); };
22 [[nodiscard]] std::set<std::string> getRegisteredSymbols() const noexcept override { return m_base_composition->getRegisteredSymbols(); };
23 [[nodiscard]] const std::vector<atomic::Species> &getRegisteredSpecies() const noexcept override { return m_base_composition->getRegisteredSpecies(); };
24 [[nodiscard]] std::unordered_map<atomic::Species, double> getMassFraction() const noexcept override { return m_base_composition->getMassFraction(); };
25 [[nodiscard]] std::unordered_map<atomic::Species, double> getNumberFraction() const noexcept override { return m_base_composition->getNumberFraction(); };
26 [[nodiscard]] double getMassFraction(const std::string& symbol) const override { return m_base_composition->getMassFraction(symbol); };
27 [[nodiscard]] double getMassFraction(const atomic::Species& species) const override { return m_base_composition->getMassFraction(species); };
28 [[nodiscard]] double getNumberFraction(const std::string& symbol) const override { return m_base_composition->getNumberFraction(symbol); };
29 [[nodiscard]] double getNumberFraction(const atomic::Species& species) const override { return m_base_composition->getNumberFraction(species); };
30 [[nodiscard]] double getMolarAbundance(const std::string& symbol) const override { return m_base_composition->getMolarAbundance(symbol); };
31 [[nodiscard]] double getMolarAbundance(const atomic::Species& species) const override { return m_base_composition->getMolarAbundance(species); };
32 [[nodiscard]] double getMeanParticleMass() const noexcept override { return m_base_composition->getMeanParticleMass(); };
33 [[nodiscard]] double getElectronAbundance() const noexcept override { return m_base_composition->getElectronAbundance(); };
34 [[nodiscard]] std::vector<double> getMassFractionVector() const noexcept override { return m_base_composition->getMassFractionVector(); };
35 [[nodiscard]] std::vector<double> getNumberFractionVector() const noexcept override { return m_base_composition->getNumberFractionVector(); };
36 [[nodiscard]] std::vector<double> getMolarAbundanceVector() const noexcept override { return m_base_composition->getMolarAbundanceVector(); };
37 [[nodiscard]] size_t getSpeciesIndex(const std::string& symbol) const override { return m_base_composition->getSpeciesIndex(symbol); };
38 [[nodiscard]] size_t getSpeciesIndex(const atomic::Species& species) const override { return m_base_composition->getSpeciesIndex(species); };
39 [[nodiscard]] atomic::Species getSpeciesAtIndex(const size_t index) const override { return m_base_composition->getSpeciesAtIndex(index); }
40
41 [[nodiscard]] detail::CompositionIterator<false> begin() override { return m_base_composition->begin(); };
42 [[nodiscard]] detail::CompositionIterator<false> end() override { return m_base_composition->end(); };
43
44 [[nodiscard]] detail::CompositionIterator<true> begin() const override { return std::as_const(*m_base_composition).begin(); };
45 [[nodiscard]] detail::CompositionIterator<true> end() const override { return std::as_const(*m_base_composition).end(); };
46 protected:
47 std::unique_ptr<CompositionAbstract> m_base_composition;
48 };
49}
Abstract base class for chemical composition representations.
double getMolarAbundance(const std::string &symbol) const override
Get the molar abundance for a given symbol.
const std::vector< atomic::Species > & getRegisteredSpecies() const noexcept override
Get all registered atomic species in the composition.
double getNumberFraction(const std::string &symbol) const override
Get the number fraction for a given symbol.
CompositionDecorator(std::unique_ptr< CompositionAbstract > decorator)
detail::CompositionIterator< true > begin() const override
double getMassFraction(const atomic::Species &species) const override
Get the mass fraction for a given species.
detail::CompositionIterator< false > begin() override
double getElectronAbundance() const noexcept override
Get the electron abundance of the composition.
double getMeanParticleMass() const noexcept override
Get the mean particle mass of the composition.
std::vector< double > getMassFractionVector() const noexcept override
Get the mass fraction as a vector.
double getMassFraction(const std::string &symbol) const override
Get the mass fraction for a given symbol.
detail::CompositionIterator< true > end() const override
double getMolarAbundance(const atomic::Species &species) const override
Get the molar abundance for a given species.
std::unordered_map< atomic::Species, double > getNumberFraction() const noexcept override
Get the number fraction for all registered symbols.
std::vector< double > getNumberFractionVector() const noexcept override
Get the number fraction as a vector.
std::unique_ptr< CompositionAbstract > m_base_composition
std::vector< double > getMolarAbundanceVector() const noexcept override
Get the molar abundance as a vector.
bool contains(const atomic::Species &species) const noexcept override
Check if the composition contains the given species.
std::set< std::string > getRegisteredSymbols() const noexcept override
Get all registered chemical symbols in the composition.
std::unordered_map< atomic::Species, double > getMassFraction() const noexcept override
Get the mass fraction for all registered symbols.
double getNumberFraction(const atomic::Species &species) const override
Get the number fraction for a given species.
atomic::Species getSpeciesAtIndex(const size_t index) const override
Get the species at a given index.
size_t getSpeciesIndex(const std::string &symbol) const override
Get the index of a species by symbol.
detail::CompositionIterator< false > end() override
size_t getSpeciesIndex(const atomic::Species &species) const override
Get the index of a species.
bool contains(const std::string &symbol) const override
Check if the composition contains the given species.
Utilities and types for representing and manipulating chemical compositions.
Represents an atomic species (isotope) with its fundamental physical properties.