4#include "fourdst/composition/species.h"
5#include "fourdst/logging/logging.h"
7#include "quill/LogMacros.h"
8#include "quill/Logger.h"
12#include <unordered_set>
14#include <unordered_map>
21 using fourdst::atomic::species;
24 const std::string &primingSymbol,
29 species.at(primingSymbol),
37 const fourdst::atomic::Species &primingSpecies,
52 const fourdst::atomic::Species &primingSpecies,
55 std::unordered_set<std::string> primeReactions;
57 if (
reaction.contains(primingSpecies)) {
58 primeReactions.insert(std::string(
reaction.peName()));
61 if (primeReactions.empty()) {
62 LOG_ERROR(
m_logger,
"No priming reactions found for species '{}'.", primingSpecies.name());
64 throw std::runtime_error(
"No priming reactions found for species '" + std::string(primingSpecies.name()) +
"'.");
66 std::vector<std::string> primingReactionSet(primeReactions.begin(), primeReactions.end());
68 return primingReactionSet;
DefinedEngineView(const std::vector< std::string > &peNames, DynamicEngine &baseEngine)
Abstract class for engines supporting Jacobian and stoichiometry operations.
virtual const reaction::LogicalReactionSet & getNetworkReactions() const =0
Get the set of logical reactions in the network.
std::vector< std::string > constructPrimingReactionSet(const fourdst::atomic::Species &primingSpecies, const DynamicEngine &baseEngine) const
Constructs the set of reaction names that involve the priming species.
NetworkPrimingEngineView(const std::string &primingSymbol, DynamicEngine &baseEngine)
Constructs the view by looking up the priming species by symbol.
fourdst::atomic::Species m_primingSpecies
The priming species, if specified.