GridFire 0.0.1a
General Purpose Nuclear Network
Loading...
Searching...
No Matches
engine_priming.cpp
Go to the documentation of this file.
3
4#include "fourdst/composition/species.h"
5#include "fourdst/logging/logging.h"
6
7#include "quill/LogMacros.h"
8#include "quill/Logger.h"
9
10#include <vector>
11#include <string>
12#include <unordered_set>
13#include <stdexcept>
14#include <unordered_map>
15#include <utility>
16#include <ranges>
17#include <cmath>
18
19
20namespace gridfire {
21 using fourdst::atomic::species;
22
24 const std::string &primingSymbol,
25 DynamicEngine &baseEngine
26 ) :
29 species.at(primingSymbol),
30 baseEngine
31 ),
32 baseEngine
33 ),
34 m_primingSpecies(species.at(primingSymbol)) {}
35
37 const fourdst::atomic::Species &primingSpecies,
38 DynamicEngine &baseEngine
39 ) :
42 primingSpecies,
43 baseEngine
44 ),
45 baseEngine
46 ),
47 m_primingSpecies(primingSpecies) {
48 }
49
50
52 const fourdst::atomic::Species &primingSpecies,
53 const DynamicEngine &baseEngine
54 ) const {
55 std::unordered_set<std::string> primeReactions;
56 for (const auto &reaction : baseEngine.getNetworkReactions()) {
57 if (reaction.contains(primingSpecies)) {
58 primeReactions.insert(std::string(reaction.peName()));
59 }
60 }
61 if (primeReactions.empty()) {
62 LOG_ERROR(m_logger, "No priming reactions found for species '{}'.", primingSpecies.name());
63 m_logger->flush_log();
64 throw std::runtime_error("No priming reactions found for species '" + std::string(primingSpecies.name()) + "'.");
65 }
66 std::vector<std::string> primingReactionSet(primeReactions.begin(), primeReactions.end());
67 // LOG_INFO(m_logger, "Constructed priming reaction set with {} reactions for species '{}'.", primingReactionSet.size(), primingSpecies.name());
68 return primingReactionSet;
69 }
70
71
72
73}
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.