fourdst::libcomposition v2.3.1
Robust atomic species information library
Loading...
Searching...
No Matches
composition_abstract.h
Go to the documentation of this file.
1#pragma once
2
5
6#include <string>
7#include <unordered_map>
8#include <set>
9#include <vector>
10#include <memory>
11
12namespace fourdst::composition {
37 public:
43 virtual ~CompositionAbstract() = default;
44
50 [[nodiscard]] virtual bool contains(const fourdst::atomic::Species& species) const noexcept = 0;
51
57 [[nodiscard]] virtual bool contains(const std::string& symbol) const = 0;
58
59 [[nodiscard]] virtual size_t size() const noexcept = 0;
60
65 [[nodiscard]] virtual std::set<std::string> getRegisteredSymbols() const noexcept = 0;
66
71 [[nodiscard]] virtual const std::vector<atomic::Species> &getRegisteredSpecies() const noexcept = 0;
72
77 [[nodiscard]] virtual std::unordered_map<fourdst::atomic::Species, double> getMassFraction() const noexcept = 0;
78
83 [[nodiscard]] virtual std::unordered_map<fourdst::atomic::Species, double> getNumberFraction() const noexcept = 0;
84
90 [[nodiscard]] virtual double getMassFraction(const std::string& symbol) const = 0;
91
97 [[nodiscard]] virtual double getMassFraction(const fourdst::atomic::Species& species) const = 0;
98
104 [[nodiscard]] virtual double getNumberFraction(const std::string& symbol) const = 0;
105
111 [[nodiscard]] virtual double getNumberFraction(const fourdst::atomic::Species& species) const = 0;
112
118 [[nodiscard]] virtual double getMolarAbundance(const std::string& symbol) const = 0;
119
125 [[nodiscard]] virtual double getMolarAbundance(const fourdst::atomic::Species& species) const = 0;
126
131 [[nodiscard]] virtual double getMeanParticleMass() const noexcept = 0;
132
137 [[nodiscard]] virtual double getElectronAbundance() const noexcept = 0;
138
143 [[nodiscard]] virtual std::vector<double> getMassFractionVector() const noexcept = 0;
144
149 [[nodiscard]] virtual std::vector<double> getNumberFractionVector() const noexcept = 0;
150
155 [[nodiscard]] virtual std::vector<double> getMolarAbundanceVector() const noexcept = 0;
156
162 [[nodiscard]] virtual size_t getSpeciesIndex(const std::string& symbol) const = 0;
163
169 [[nodiscard]] virtual size_t getSpeciesIndex(const fourdst::atomic::Species& species) const = 0;
170
176 [[nodiscard]] virtual atomic::Species getSpeciesAtIndex(size_t index) const = 0;
177
178 [[nodiscard]] virtual std::unique_ptr<CompositionAbstract> clone() const = 0;
179
180 [[nodiscard]] virtual iterator begin() = 0;
181 [[nodiscard]] virtual iterator end() = 0;
182 [[nodiscard]] virtual const_iterator begin() const = 0;
183 [[nodiscard]] virtual const_iterator end() const = 0;
184
185 [[nodiscard]] virtual std::size_t hash() const = 0;
186 };
187
188 // ReSharper disable once CppClassCanBeFinal
189}
Abstract base class for chemical composition representations.
detail::CompositionIterator< true > const_iterator
virtual double getMolarAbundance(const std::string &symbol) const =0
Get the molar abundance for a given symbol.
virtual std::size_t hash() const =0
virtual bool contains(const fourdst::atomic::Species &species) const noexcept=0
Check if the composition contains the given species.
virtual std::unordered_map< fourdst::atomic::Species, double > getMassFraction() const noexcept=0
Get the mass fraction for all registered symbols.
virtual atomic::Species getSpeciesAtIndex(size_t index) const =0
Get the species at a given index.
virtual std::vector< double > getMolarAbundanceVector() const noexcept=0
Get the molar abundance as a vector.
virtual std::unordered_map< fourdst::atomic::Species, double > getNumberFraction() const noexcept=0
Get the number fraction for all registered symbols.
virtual bool contains(const std::string &symbol) const =0
Check if the composition contains the given species.
virtual std::vector< double > getMassFractionVector() const noexcept=0
Get the mass fraction as a vector.
virtual std::unique_ptr< CompositionAbstract > clone() const =0
virtual std::vector< double > getNumberFractionVector() const noexcept=0
Get the number fraction as a vector.
virtual ~CompositionAbstract()=default
Virtual destructor.
virtual std::set< std::string > getRegisteredSymbols() const noexcept=0
Get all registered chemical symbols in the composition.
detail::CompositionIterator< false > iterator
virtual double getElectronAbundance() const noexcept=0
Get the electron abundance of the composition.
virtual const std::vector< atomic::Species > & getRegisteredSpecies() const noexcept=0
Get all registered atomic species in the composition.
virtual size_t getSpeciesIndex(const std::string &symbol) const =0
Get the index of a species by symbol.
virtual size_t size() const noexcept=0
virtual double getMeanParticleMass() const noexcept=0
Get the mean particle mass of the composition.
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.