GridFire 0.0.1a
General Purpose Nuclear Network
Loading...
Searching...
No Matches
gridfire::reaction::LogicalReaction Class Referencefinal

Represents a "logical" reaction that aggregates rates from multiple sources. More...

#include <reaction.h>

Inheritance diagram for gridfire::reaction::LogicalReaction:
gridfire::reaction::Reaction

Public Member Functions

 LogicalReaction (const std::vector< Reaction > &reactions)
 Constructs a LogicalReaction from a vector of Reaction objects.
 
void add_reaction (const Reaction &reaction)
 Adds another Reaction source to this logical reaction.
 
size_t size () const
 Gets the number of source rates contributing to this logical reaction.
 
std::vector< std::string > sources () const
 Gets the list of source labels for the aggregated rates.
 
double calculate_rate (const double T9) const override
 Calculates the total reaction rate by summing all source rates.
 
CppAD::AD< double > calculate_rate (const CppAD::AD< double > T9) const override
 Calculates the total reaction rate using CppAD types.
 
Iterators

Provides iterators to loop over the rate coefficient sets.

auto begin ()
 
auto begin () const
 
auto end ()
 
auto end () const
 
- Public Member Functions inherited from gridfire::reaction::Reaction
virtual ~Reaction ()=default
 Virtual destructor.
 
 Reaction (const std::string_view id, const std::string_view peName, const int chapter, const std::vector< fourdst::atomic::Species > &reactants, const std::vector< fourdst::atomic::Species > &products, const double qValue, const std::string_view label, const RateCoefficientSet &sets, const bool reverse=false)
 Constructs a Reaction object.
 
virtual std::string_view peName () const
 Gets the reaction name in (projectile, ejectile) notation.
 
int chapter () const
 Gets the REACLIB chapter number.
 
std::string_view sourceLabel () const
 Gets the source label for the rate data.
 
const RateCoefficientSetrateCoefficients () const
 Gets the set of rate coefficients.
 
bool contains (const fourdst::atomic::Species &species) const
 Checks if the reaction involves a given species as a reactant or product.
 
bool contains_reactant (const fourdst::atomic::Species &species) const
 Checks if the reaction involves a given species as a reactant.
 
bool contains_product (const fourdst::atomic::Species &species) const
 Checks if the reaction involves a given species as a product.
 
std::unordered_set< fourdst::atomic::Species > all_species () const
 Gets a set of all unique species involved in the reaction.
 
std::unordered_set< fourdst::atomic::Species > reactant_species () const
 Gets a set of all unique reactant species.
 
std::unordered_set< fourdst::atomic::Species > product_species () const
 Gets a set of all unique product species.
 
size_t num_species () const
 Gets the number of unique species involved in the reaction.
 
int stoichiometry (const fourdst::atomic::Species &species) const
 Calculates the stoichiometric coefficient for a given species.
 
std::unordered_map< fourdst::atomic::Species, int > stoichiometry () const
 Gets a map of all species to their stoichiometric coefficients.
 
std::string_view id () const
 Gets the unique identifier of the reaction.
 
double qValue () const
 Gets the Q-value of the reaction.
 
const std::vector< fourdst::atomic::Species > & reactants () const
 Gets the vector of reactant species.
 
const std::vector< fourdst::atomic::Species > & products () const
 Gets the vector of product species.
 
bool is_reverse () const
 Checks if this is a reverse reaction rate.
 
double excess_energy () const
 Calculates the excess energy from the mass difference of reactants and products.
 
bool operator== (const Reaction &other) const
 Compares this reaction with another for equality based on their IDs.
 
bool operator!= (const Reaction &other) const
 Compares this reaction with another for inequality.
 
uint64_t hash (uint64_t seed=0) const
 Computes a hash for the reaction based on its ID.
 

Private Member Functions

template<typename T>
calculate_rate (const T T9) const
 Template implementation for calculating the total reaction rate.
 

Private Attributes

std::vector< std::string > m_sources
 List of source labels.
 
std::vector< RateCoefficientSetm_rates
 List of rate coefficient sets from each source.
 

Friends

std::ostream & operator<< (std::ostream &os, const LogicalReaction &r)
 

Additional Inherited Members

- Protected Attributes inherited from gridfire::reaction::Reaction
quill::Logger * m_logger = fourdst::logging::LogManager::getInstance().getLogger("log")
 
std::string m_id
 Unique identifier for the reaction (e.g., "h1+h1=>h2+e+nu").
 
std::string m_peName
 Name of the reaction in (projectile, ejectile) notation (e.g. "p(p,g)d").
 
int m_chapter
 Chapter number from the REACLIB database, defining the reaction structure.
 
double m_qValue = 0.0
 Q-value of the reaction in MeV.
 
std::vector< fourdst::atomic::Species > m_reactants
 Reactants of the reaction.
 
std::vector< fourdst::atomic::Species > m_products
 Products of the reaction.
 
std::string m_sourceLabel
 Source label for the rate data (e.g., "wc12w", "st08").
 
RateCoefficientSet m_rateCoefficients
 The seven rate coefficients.
 
bool m_reverse = false
 Flag indicating if this is a reverse reaction rate.
 

Detailed Description

Represents a "logical" reaction that aggregates rates from multiple sources.

A LogicalReaction shares the same reactants and products but combines rates from different evaluations (e.g., "wc12" and "st08" for the same physical reaction). The total rate is the sum of the individual rates. It inherits from Reaction, using the properties of the first provided reaction as its base properties (reactants, products, Q-value, etc.).

Definition at line 308 of file reaction.h.

Constructor & Destructor Documentation

◆ LogicalReaction()

gridfire::reaction::LogicalReaction::LogicalReaction ( const std::vector< Reaction > & reactions)
explicit

Constructs a LogicalReaction from a vector of Reaction objects.

Parameters
reactionsA vector of reactions that represent the same logical process.
Exceptions
std::runtime_errorif the provided reactions have inconsistent Q-values.

Definition at line 142 of file reaction.cpp.

Member Function Documentation

◆ add_reaction()

void gridfire::reaction::LogicalReaction::add_reaction ( const Reaction & reaction)

Adds another Reaction source to this logical reaction.

Parameters
reactionThe reaction to add.
Exceptions
std::runtime_errorif the reaction has a different peName, a duplicate source label, or an inconsistent Q-value.

Definition at line 171 of file reaction.cpp.

◆ begin() [1/2]

auto gridfire::reaction::LogicalReaction::begin ( )
inline

Definition at line 355 of file reaction.h.

◆ begin() [2/2]

auto gridfire::reaction::LogicalReaction::begin ( ) const
inlinenodiscard

Definition at line 356 of file reaction.h.

◆ calculate_rate() [1/3]

CppAD::AD< double > gridfire::reaction::LogicalReaction::calculate_rate ( const CppAD::AD< double > T9) const
nodiscardoverridevirtual

Calculates the total reaction rate using CppAD types.

Parameters
T9The temperature in units of 10^9 K, as a CppAD::AD<double>.
Returns
The total calculated reaction rate, as a CppAD::AD<double>.

Reimplemented from gridfire::reaction::Reaction.

Definition at line 197 of file reaction.cpp.

◆ calculate_rate() [2/3]

double gridfire::reaction::LogicalReaction::calculate_rate ( const double T9) const
nodiscardoverridevirtual

Calculates the total reaction rate by summing all source rates.

Parameters
T9The temperature in units of 10^9 K.
Returns
The total calculated reaction rate.

Reimplemented from gridfire::reaction::Reaction.

Definition at line 193 of file reaction.cpp.

◆ calculate_rate() [3/3]

template<typename T>
T gridfire::reaction::LogicalReaction::calculate_rate ( const T T9) const
inlinenodiscardprivate

Template implementation for calculating the total reaction rate.

Template Parameters
TThe numeric type (double or CppAD::AD<double>).
Parameters
T9The temperature in units of 10^9 K.
Returns
The total calculated reaction rate.

This method iterates through all stored RateCoefficientSets, calculates the rate for each, and returns their sum.

Definition at line 381 of file reaction.h.

◆ end() [1/2]

auto gridfire::reaction::LogicalReaction::end ( )
inline

Definition at line 357 of file reaction.h.

◆ end() [2/2]

auto gridfire::reaction::LogicalReaction::end ( ) const
inlinenodiscard

Definition at line 358 of file reaction.h.

◆ size()

size_t gridfire::reaction::LogicalReaction::size ( ) const
inlinenodiscard

Gets the number of source rates contributing to this logical reaction.

Returns
The number of aggregated rates.

Definition at line 329 of file reaction.h.

◆ sources()

std::vector< std::string > gridfire::reaction::LogicalReaction::sources ( ) const
inlinenodiscard

Gets the list of source labels for the aggregated rates.

Returns
A vector of source label strings.

Definition at line 335 of file reaction.h.

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream & os,
const LogicalReaction & r )
friend

Definition at line 362 of file reaction.h.

Member Data Documentation

◆ m_rates

std::vector<RateCoefficientSet> gridfire::reaction::LogicalReaction::m_rates
private

List of rate coefficient sets from each source.

Definition at line 369 of file reaction.h.

◆ m_sources

std::vector<std::string> gridfire::reaction::LogicalReaction::m_sources
private

List of source labels.

Definition at line 368 of file reaction.h.


The documentation for this class was generated from the following files: