perf(Composition): improved static correctness
This commit is contained in:
@@ -312,14 +312,14 @@ namespace fourdst::composition {
|
|||||||
* @param fractions The fractions to check.
|
* @param fractions The fractions to check.
|
||||||
* @return True if the fractions are valid, false otherwise.
|
* @return True if the fractions are valid, false otherwise.
|
||||||
*/
|
*/
|
||||||
[[nodiscard]] bool isValidComposition(const std::vector<double>& fractions) const;
|
[[nodiscard]] static bool isValidComposition(const std::vector<double>& fractions) ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Validates the given fractions, throwing an exception on failure.
|
* @brief Validates the given fractions, throwing an exception on failure.
|
||||||
* @param fractions The fractions to validate.
|
* @param fractions The fractions to validate.
|
||||||
* @throws exceptions::InvalidCompositionError if the fractions are invalid.
|
* @throws exceptions::InvalidCompositionError if the fractions are invalid.
|
||||||
*/
|
*/
|
||||||
void validateComposition(const std::vector<double>& fractions) const;
|
static void validateComposition(const std::vector<double>& fractions) ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Finalizes the composition in mass fraction mode.
|
* @brief Finalizes the composition in mass fraction mode.
|
||||||
|
|||||||
@@ -321,14 +321,14 @@ namespace fourdst::composition {
|
|||||||
return atomic::species.contains(symbol);
|
return atomic::species.contains(symbol);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Composition::validateComposition(const std::vector<double>& fractions) const {
|
void Composition::validateComposition(const std::vector<double>& fractions) {
|
||||||
if (!isValidComposition(fractions)) {
|
if (!isValidComposition(fractions)) {
|
||||||
LOG_ERROR(getLogger(), "Invalid composition.");
|
LOG_ERROR(getLogger(), "Invalid composition.");
|
||||||
throw exceptions::InvalidCompositionError("Invalid composition.");
|
throw exceptions::InvalidCompositionError("Invalid composition.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Composition::isValidComposition(const std::vector<double>& fractions) const {
|
bool Composition::isValidComposition(const std::vector<double>& fractions) {
|
||||||
const double sum = std::accumulate(fractions.begin(), fractions.end(), 0.0);
|
const double sum = std::accumulate(fractions.begin(), fractions.end(), 0.0);
|
||||||
if (sum < 0.999999 || sum > 1.000001) {
|
if (sum < 0.999999 || sum > 1.000001) {
|
||||||
LOG_ERROR(getLogger(), "The sum of fractions must be equal to 1 (expected 1, got {}).", sum);
|
LOG_ERROR(getLogger(), "The sum of fractions must be equal to 1 (expected 1, got {}).", sum);
|
||||||
@@ -435,7 +435,7 @@ namespace fourdst::composition {
|
|||||||
) {
|
) {
|
||||||
std::vector<std::string> symbols;
|
std::vector<std::string> symbols;
|
||||||
symbols.reserve(species.size());
|
symbols.reserve(species.size());
|
||||||
for(const auto& s : species) symbols.push_back(std::string(s.name()));
|
for(const auto& s : species) symbols.emplace_back(s.name());
|
||||||
return setNumberFraction(symbols, number_fractions);
|
return setNumberFraction(symbols, number_fractions);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1024,12 +1024,12 @@ namespace fourdst::composition {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Composition::hasSpecies(const fourdst::atomic::Species &species) const {
|
bool Composition::hasSpecies(const fourdst::atomic::Species &species) const {
|
||||||
for (const auto &entry: m_compositions | std::views::values) {
|
return std::ranges::any_of(
|
||||||
if (entry.isotope() == species) {
|
m_compositions | std::views::values,
|
||||||
return true;
|
[&species](const CompositionEntry &entry) {
|
||||||
|
return entry.isotope() == species;
|
||||||
}
|
}
|
||||||
}
|
);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Composition::contains(
|
bool Composition::contains(
|
||||||
|
|||||||
Reference in New Issue
Block a user