fourdst::libcomposition v2.3.1
Robust atomic species information library
Loading...
Searching...
No Matches
composition_masked.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4#include <set>
5#include <unordered_map>
6#include <memory>
7#include <string>
8
13
14namespace fourdst::composition {
16 public:
19
21 const CompositionAbstract& baseComposition,
22 const std::vector<atomic::Species>& activeSpecies
23 );
24
25 [[nodiscard]] bool contains(const atomic::Species &species) const noexcept override;
26 [[nodiscard]] bool contains(const std::string &symbol) const override;
27
28 [[nodiscard]] const std::vector<atomic::Species>& getRegisteredSpecies() const noexcept override;
29 [[nodiscard]] std::set<std::string> getRegisteredSymbols() const noexcept override;
30
31 [[nodiscard]] size_t size() const noexcept override;
32
33 [[nodiscard]] std::unordered_map<atomic::Species, double> getMassFraction() const noexcept override;
34 [[nodiscard]] std::unordered_map<atomic::Species, double> getNumberFraction() const noexcept override;
35
36 [[nodiscard]] double getMassFraction(const std::string &symbol) const override;
37 [[nodiscard]] double getMassFraction(const atomic::Species &species) const override;
38 [[nodiscard]] double getNumberFraction(const std::string &symbol) const override;
39 [[nodiscard]] double getNumberFraction(const atomic::Species &species) const override;
40 [[nodiscard]] double getMolarAbundance(const std::string &symbol) const override;
41 [[nodiscard]] double getMolarAbundance(const atomic::Species &species) const override;
42 [[nodiscard]] double getMeanParticleMass() const noexcept override;
43
44 [[nodiscard]] double getElectronAbundance() const noexcept override;
45
46 [[nodiscard]] std::vector<double> getMassFractionVector() const noexcept override;
47 [[nodiscard]] std::vector<double> getNumberFractionVector() const noexcept override;
48 [[nodiscard]] std::vector<double> getMolarAbundanceVector() const noexcept override;
49
50 [[nodiscard]] size_t getSpeciesIndex(const std::string &symbol) const override;
51 [[nodiscard]] size_t getSpeciesIndex(const atomic::Species &species) const override;
52 [[nodiscard]] atomic::Species getSpeciesAtIndex(size_t index) const override;
53
54 [[nodiscard]] std::unique_ptr<CompositionAbstract> clone() const override;
55
56 [[nodiscard]] iterator begin() override;
57 [[nodiscard]] iterator end() override;
58
59 [[nodiscard]] const_iterator begin() const override;
60 [[nodiscard]] const_iterator end() const override;
61
62 [[nodiscard]] size_t hash() const override;
63
64 private:
65 std::vector<atomic::Species> m_activeSpecies;
66 std::vector<double> m_molarAbundances;
67 };
68
69}
Abstract base class for chemical composition representations.
CompositionDecorator(std::unique_ptr< CompositionAbstract > decorator)
bool contains(const atomic::Species &species) const noexcept override
Check if the composition contains the given species.
std::vector< atomic::Species > m_activeSpecies
std::unordered_map< atomic::Species, double > getMassFraction() const noexcept override
Get the mass fraction for all registered symbols.
std::unordered_map< atomic::Species, double > getNumberFraction() const noexcept override
Get the number fraction for all registered symbols.
double getMolarAbundance(const std::string &symbol) const override
Get the molar abundance for a given symbol.
std::unique_ptr< CompositionAbstract > clone() const 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.
const std::vector< atomic::Species > & getRegisteredSpecies() const noexcept override
Get all registered atomic species in the composition.
size_t size() const noexcept override
size_t getSpeciesIndex(const std::string &symbol) const override
Get the index of a species by symbol.
std::vector< double > getMassFractionVector() const noexcept override
Get the mass fraction as a vector.
MaskedComposition(const CompositionAbstract &baseComposition, const std::vector< atomic::Species > &activeSpecies)
std::set< std::string > getRegisteredSymbols() const noexcept override
Get all registered chemical symbols in the composition.
std::vector< double > getMolarAbundanceVector() const noexcept override
Get the molar abundance as a vector.
atomic::Species getSpeciesAtIndex(size_t index) const override
Get the species at a given index.
detail::CompositionIterator< true > const_iterator
std::vector< double > getNumberFractionVector() const noexcept override
Get the number fraction as a vector.
detail::CompositionIterator< false > iterator
Contains canonical information about atomic species and elements used by 4D-STAR.
Utilities and types for representing and manipulating chemical compositions.
Represents an atomic species (isotope) with its fundamental physical properties.