diff --git a/src/include/gridfire/engine/engine_graph.h b/src/include/gridfire/engine/engine_graph.h index ef972995..71ce37e5 100644 --- a/src/include/gridfire/engine/engine_graph.h +++ b/src/include/gridfire/engine/engine_graph.h @@ -18,6 +18,7 @@ #include #include #include +#include #include @@ -707,6 +708,7 @@ namespace gridfire { * @param rho Density in g/cm^3. * @param Ye * @param mue + * @param speciesIDLookup * @return Molar flow rate for the reaction (e.g., mol/g/s). * * This method computes the net rate at which the given reaction proceeds @@ -716,14 +718,17 @@ namespace gridfire { T calculateMolarReactionFlow( const reaction::Reaction &reaction, const std::vector& Y, - const T T9, - const T rho, T Ye, T mue + T T9, + T rho, + T Ye, + T mue, + const std::function(const fourdst::atomic::Species &)>&speciesIDLookup ) const; template T calculateReverseMolarReactionFlow( - const T T9, - const T rho, + T T9, + T rho, std::vector screeningFactors, const std::vector& Y, size_t reactionIndex, @@ -739,6 +744,7 @@ namespace gridfire { * @param rho Density in g/cm^3. * @param Ye * @param mue + * @param speciesLookup * @return StepDerivatives containing dY/dt and energy generation rate. * * This method calculates the time derivatives of all species and the @@ -748,7 +754,10 @@ namespace gridfire { [[nodiscard]] StepDerivatives calculateAllDerivatives( const std::vector& Y_in, T T9, - T rho, T Ye, T mue + T rho, + T Ye, + T mue, + std::function(const fourdst::atomic::Species &)> speciesLookup ) const; // /** @@ -869,7 +878,8 @@ namespace gridfire { const T T9, const T rho, const T Ye, - const T mue + const T mue, + const std::function(const fourdst::atomic::Species &)> speciesLookup ) const { std::vector screeningFactors = m_screeningModel->calculateScreeningFactors( m_reactions, @@ -913,16 +923,21 @@ namespace gridfire { const T N_A = static_cast(m_constants.Na); // Avogadro's number in mol^-1 const T c = static_cast(m_constants.c); // Speed of light in cm/s - // TODO: It may be prudent to introduce assertions here which validate units but will be removed in release builds (to ensure that unit inconsistencies do not creep in during future development) - // libconstants already has units built in so this should be straightforward. - // --- SINGLE LOOP OVER ALL REACTIONS --- for (size_t reactionIndex = 0; reactionIndex < m_reactions.size(); ++reactionIndex) { const auto& reaction = m_reactions[reactionIndex]; // 1. Calculate forward reaction rate const T forwardMolarReactionFlow = screeningFactors[reactionIndex] * - calculateMolarReactionFlow(reaction, Y, T9, rho, Ye, mue); + calculateMolarReactionFlow( + reaction, + Y, + T9, + rho, + Ye, + mue, + speciesLookup + ); // 2. Calculate reverse reaction rate T reverseMolarFlow = static_cast(0.0); @@ -965,7 +980,8 @@ namespace gridfire { const T T9, const T rho, const T Ye, - const T mue + const T mue, + const std::function(const fourdst::atomic::Species &)>& speciesIDLookup ) const { // --- Pre-setup (flags to control conditionals in an AD safe / branch aware manner) --- @@ -989,10 +1005,12 @@ namespace gridfire { // --- Loop through each unique reactant species and calculate the molar concentration for that species then multiply that into the accumulator --- for (const auto& [species_name, count] : reactant_counts) { // --- Resolve species to molar abundance --- - // PERF: Could probably optimize out this lookup - const auto species_it = m_speciesToIndexMap.find(m_networkSpeciesMap.at(species_name)); - const size_t species_index = species_it->second; - const T Yi = Y[species_index]; + // TODO: We need some way to handle the case when a species in the reaction is not part of the composition being tracked + const std::optional species_index = speciesIDLookup(m_networkSpeciesMap.at(species_name)); + if (!species_index.has_value()) { + return static_cast(0.0); // If any reactant is not present, the reaction cannot proceed + } + const T Yi = Y[species_index.value()]; // --- If count is > 1 , we need to raise the molar concentration to the power of count since there are really count bodies in that reaction --- molar_concentration_product *= CppAD::pow(Yi, static_cast(count)); // ni^count diff --git a/src/include/gridfire/exceptions/error_engine.h b/src/include/gridfire/exceptions/error_engine.h index b7516b0f..b4fecd84 100644 --- a/src/include/gridfire/exceptions/error_engine.h +++ b/src/include/gridfire/exceptions/error_engine.h @@ -2,6 +2,7 @@ #include #include +#include #include namespace gridfire::exceptions { @@ -17,41 +18,41 @@ namespace gridfire::exceptions { int m_total_steps; double m_eps_nuc; }; - explicit StaleEngineTrigger(const state &s) - : m_state(s) {} + explicit StaleEngineTrigger(state s) + : m_state(std::move(s)) {} - const char* what() const noexcept override{ + [[nodiscard]] const char* what() const noexcept override{ return "Engine reports stale state. This means that the caller should trigger a update of the engine state before continuing with the integration. If you as an end user are seeing this error, it is likely a bug in the code that should be reported. Please provide the input parameters and the context in which this error occurred. Thank you for your help!"; } - state getState() const { + [[nodiscard]] state getState() const { return m_state; } - size_t numSpecies() const { + [[nodiscard]] size_t numSpecies() const { return m_state.m_Y.size(); } - size_t totalSteps() const { + [[nodiscard]] size_t totalSteps() const { return m_state.m_total_steps; } - double energy() const { + [[nodiscard]] double energy() const { return m_state.m_eps_nuc; } - double getMolarAbundance(const size_t index) const { + [[nodiscard]] double getMolarAbundance(const size_t index) const { if (index > m_state.m_Y.size() - 1) { throw std::out_of_range("Index out of bounds for molar abundance vector."); } return m_state.m_Y[index]; } - double temperature() const { + [[nodiscard]] double temperature() const { return m_state.m_T9 * 1e9; // Convert T9 back to Kelvin } - double density() const { + [[nodiscard]] double density() const { return m_state.m_rho; } private: @@ -61,10 +62,10 @@ namespace gridfire::exceptions { class StaleEngineError final : public EngineError { public: - explicit StaleEngineError(const std::string& message) - : m_message(message) {} + explicit StaleEngineError(std::string message) + : m_message(std::move(message)) {} - const char* what() const noexcept override { + [[nodiscard]] const char* what() const noexcept override { return m_message.c_str(); } @@ -74,10 +75,10 @@ namespace gridfire::exceptions { class FailedToPartitionEngineError final : public EngineError { public: - explicit FailedToPartitionEngineError(const std::string& message) - : m_message(message) {} + explicit FailedToPartitionEngineError(std::string message) + : m_message(std::move(message)) {} - const char* what() const noexcept override { + [[nodiscard]] const char* what() const noexcept override { return m_message.c_str(); } private: @@ -86,10 +87,10 @@ namespace gridfire::exceptions { class NetworkResizedError final : public EngineError { public: - explicit NetworkResizedError(const std::string& message) - : m_message(message) {} + explicit NetworkResizedError(std::string message) + : m_message(std::move(message)) {} - const char* what() const noexcept override { + [[nodiscard]] const char* what() const noexcept override { return m_message.c_str(); } private: @@ -98,10 +99,10 @@ namespace gridfire::exceptions { class UnableToSetNetworkReactionsError final : public EngineError { public: - explicit UnableToSetNetworkReactionsError(const std::string& message) - : m_message(message) {} + explicit UnableToSetNetworkReactionsError(std::string message) + : m_message(std::move(message)) {} - const char* what() const noexcept override { + [[nodiscard]] const char* what() const noexcept override { return m_message.c_str(); } diff --git a/src/include/gridfire/expectations/expected_engine.h b/src/include/gridfire/expectations/expected_engine.h index 6c11daf6..dee766de 100644 --- a/src/include/gridfire/expectations/expected_engine.h +++ b/src/include/gridfire/expectations/expected_engine.h @@ -42,7 +42,7 @@ namespace gridfire::expectations { } }; - struct StaleEngineError : EngineError { + struct StaleEngineError final : EngineError { StaleEngineErrorTypes staleType; explicit StaleEngineError(const StaleEngineErrorTypes sType) diff --git a/src/include/gridfire/partition/composite/partition_composite.h b/src/include/gridfire/partition/composite/partition_composite.h index 585b775a..133149a1 100644 --- a/src/include/gridfire/partition/composite/partition_composite.h +++ b/src/include/gridfire/partition/composite/partition_composite.h @@ -6,7 +6,6 @@ #include "fourdst/logging/logging.h" #include -#include #include #include @@ -99,6 +98,6 @@ namespace gridfire::partition { * @return Unique pointer to a new PartitionFunction instance of the given type. * @throws std::runtime_error If the given type is not recognized. + */ - [[nodiscard]] std::unique_ptr selectPartitionFunction(const BasePartitionType type) const; + [[nodiscard]] std::unique_ptr selectPartitionFunction(BasePartitionType type) const; }; } \ No newline at end of file diff --git a/src/include/gridfire/reaction/weak/weak.h b/src/include/gridfire/reaction/weak/weak.h index 582bd196..d0865352 100644 --- a/src/include/gridfire/reaction/weak/weak.h +++ b/src/include/gridfire/reaction/weak/weak.h @@ -1,6 +1,6 @@ #pragma once -#define GRIDFIRE_WEAK_REACTION_LIB_SENTINEL -60.0 +#define GRIDFIRE_WEAK_REACTION_LIB_SENTINEL (-60.0) #include "gridfire/reaction/reaction.h" #include "gridfire/reaction/weak/weak_types.h" @@ -541,21 +541,74 @@ namespace gridfire::rates::weak { m_atomic(ax, ay); rateConstant = static_cast(ay[0]); } else { // The case where T is of type double - const std::expected result = m_interpolator.get_rates( + std::expected result = m_interpolator.get_rates( static_cast(m_reactant_a), static_cast(m_reactant_z), T9, - log_rhoYe, - mue + log_rhoYe ); + // TODO: Clean this up. When a bit of code needs this many comments to make it clear it is bad code if (!result.has_value()) { - const InterpolationErrorType type = result.error().type; - const std::string msg = std::format( - "Failed to interpolate weak rate for (A={}, Z={}) at T9={}, log10(rho*Ye)={}, mu_e={} with error: {}", - m_reactant.name(), m_reactant_a, m_reactant_z, T9, log_rhoYe, mue, InterpolationErrorTypeMap.at(type) + bool okayToClamp = true; + const auto&[errorType, boundsErrorInfo] = result.error(); + + // The logic here is + // 1. If there is any bounds error in T9 then we do not allow clamping. T9 should be a large enough grid + // that the user should not be asking for values outside the grid. + // 2. If there is no bounds error in T9, but there is a bounds error in log_rhoYe, then we only allow + // clamping if the query value is below the minimum of the grid. If it is above the maximum + // of the grid, then we do not allow clamping. The reason for this is that at high density, + // screening and other effects can make a significant difference to the rates, and + // the user should be aware that they are asking for a value outside the grid. + + // There are a couple of safety asserts in here that are only active in debug builds. These are to + // ensure that our assumptions about the error information are correct. These should really never + // be triggered, but if they are, they will help us to identify any issues. + if (errorType == InterpolationErrorType::BOUNDS_ERROR) { + assert(boundsErrorInfo.has_value()); // must be true if type is BOUNDS_ERROR, removed in release builds + + if (boundsErrorInfo->contains(TableAxes::T9)) { + okayToClamp = false; + } else { + assert(boundsErrorInfo->contains(TableAxes::LOG_RHOYE)); // must be true if T9 is not, removed in release builds + const BoundsErrorInfo& boundsError = boundsErrorInfo->at(TableAxes::LOG_RHOYE); + + if (boundsError.queryValue > boundsError.axisMaxValue) { + okayToClamp = false; + } + + assert(boundsError.queryValue < boundsError.axisMinValue); // Given the above logic, this must be true, removed in release builds + } + } + + if (!okayToClamp) { + const InterpolationErrorType type = result.error().type; + const std::string msg = std::format( + "Failed to interpolate weak rate for {} (A={}, Z={}) at T9={}, log10(rho*Ye)={}, with error: {}. Clamping disallowed due to either query value being out of bounds in T9 or being above the maximum in log10(rho*Ye).", + m_reactant.name(), m_reactant_a, m_reactant_z, T9, log_rhoYe, InterpolationErrorTypeMap.at(type) + ); + throw std::runtime_error(msg); + } + + // In the case we get here the error was a bounds error in log_rhoYe and the query value was below the minimum of the grid + // so the solution is to clamp the query value to the minimum of the grid and try again. + result = m_interpolator.get_rates( + static_cast(m_reactant_a), + static_cast(m_reactant_z), + T9, + boundsErrorInfo->at(TableAxes::LOG_RHOYE).axisMinValue ); - throw std::runtime_error(msg); + + // Check the result again. If it fails this time then we have a real problem and we throw. + if (!result.has_value()) { + const InterpolationErrorType type = result.error().type; + const std::string msg = std::format( + "After clamping, failed to interpolate weak rate for {} (A={}, Z={}) at T9={}, log10(rho*Ye)={}, with error: {}", + m_reactant.name(), m_reactant_a, m_reactant_z, T9, log_rhoYe, InterpolationErrorTypeMap.at(type) + ); + throw std::runtime_error(msg); + } } const WeakRatePayload payload = result.value(); const double logRate = get_log_rate_from_payload(payload); diff --git a/src/include/gridfire/reaction/weak/weak_interpolator.h b/src/include/gridfire/reaction/weak/weak_interpolator.h index c5fdc63a..e1a7af52 100644 --- a/src/include/gridfire/reaction/weak/weak_interpolator.h +++ b/src/include/gridfire/reaction/weak/weak_interpolator.h @@ -2,6 +2,7 @@ #include "gridfire/reaction/weak/weak_types.h" #include "fourdst/composition/atomicSpecies.h" +#include "fourdst/logging/logging.h" #include #include @@ -66,7 +67,6 @@ namespace gridfire::rates::weak { * @param Z Proton number of the isotope. * @param t9 Temperature in GK (10^9 K). * @param log_rhoYe Log10 of rho*Ye (cgs density times electron fraction). - * @param mu_e Electron chemical potential (MeV). * @return expected: payload on success; * InterpolationError::UNKNOWN_SPECIES_ERROR if (A,Z) not present; or * InterpolationError::BOUNDS_ERROR if any coordinate is outside the table @@ -84,8 +84,7 @@ namespace gridfire::rates::weak { uint16_t A, uint8_t Z, double t9, - double log_rhoYe, - double mu_e + double log_rhoYe ) const; /** @@ -100,7 +99,6 @@ namespace gridfire::rates::weak { * @param Z Proton number of the isotope. * @param t9 Temperature in GK (10^9 K). * @param log_rhoYe Log10 of rho*Ye (cgs density times electron fraction). - * @param mu_e Electron chemical potential (MeV). * @return expected: derivative payload on success; * otherwise an InterpolationError as described above. * @par Example @@ -114,10 +112,10 @@ namespace gridfire::rates::weak { uint16_t A, uint8_t Z, double t9, - double log_rhoYe, - double mu_e + double log_rhoYe ) const; private: + quill::Logger* m_logger = fourdst::logging::LogManager::getInstance().getLogger("log"); /** * @brief Pack (A,Z) into a 32-bit key used for the internal map. * diff --git a/src/include/gridfire/reaction/weak/weak_types.h b/src/include/gridfire/reaction/weak/weak_types.h index 793d4585..7ac3fa90 100644 --- a/src/include/gridfire/reaction/weak/weak_types.h +++ b/src/include/gridfire/reaction/weak/weak_types.h @@ -93,18 +93,18 @@ namespace gridfire::rates::weak { }; /** - * @brief Partial derivatives of the log10() fields w.r.t. (T9, log10(rho*Ye), mu_e). + * @brief Partial derivatives of the log10() fields w.r.t. (T9, log10(rho*Ye)). * - * Array ordering is [d/dT9, d/dlogRhoYe, d/dMuE] for each corresponding field. + * Array ordering is [d/dT9, d/dlogRhoYe] for each corresponding field. */ struct WeakRateDerivatives { // Each array holds [d/dT9, d/dlogRhoYe, d/dMuE] - std::array d_log_beta_plus; - std::array d_log_electron_capture; - std::array d_log_neutrino_loss_ec; - std::array d_log_beta_minus; - std::array d_log_positron_capture; - std::array d_log_antineutrino_loss_bd; + std::array d_log_beta_plus; + std::array d_log_electron_capture; + std::array d_log_neutrino_loss_ec; + std::array d_log_beta_minus; + std::array d_log_positron_capture; + std::array d_log_antineutrino_loss_bd; }; /** @@ -133,6 +133,19 @@ namespace gridfire::rates::weak { LOG_RHOYE, ///< log10(rho*Ye). MUE ///< Electron chemical potential (MeV). }; +} + +// This need to be here to avoid compiler issues related to the order of specialization +namespace std { + template <> + struct hash { + std::size_t operator()(gridfire::rates::weak::TableAxes t) const noexcept { + return std::hash()(static_cast(t)); + } + }; +} + +namespace gridfire::rates::weak { /** * @brief Detailed bounds information for a BOUNDS_ERROR. @@ -154,20 +167,20 @@ namespace gridfire::rates::weak { std::optional> boundsErrorInfo = std::nullopt; }; + /** - * @brief Regular 3D grid and payloads for a single isotope (A,Z). + * @brief Regular 2D grid and payloads for a single isotope (A,Z). * * Axes are monotonically increasing per dimension. Data vector is laid out in * row-major order with index computed as: - * index = ((i_t9 * rhoYe_axis.size() + j_rhoYe) * mue_axis.size()) + k_mue + * + * index = i_t9 * N_rhoYe + j_rhoYe + * */ struct IsotopeGrid { - std::vector t9_axis; ///< Unique sorted T9 grid. - std::vector rhoYe_axis;///< Unique sorted log10(rho*Ye) grid. - std::vector mue_axis; ///< Unique sorted mu_e grid. - - // index = ((i_t9 * rhoYe_axis.size() + j_rhoYe) * mue_axis.size()) + k_mue - std::vector data; ///< Payloads at each grid node. + std::vector t9_axis; ///< Unique sorted T9 grid. + std::vector rhoYe_axis; ///< Unique sorted log10(rho*Ye) grid. + std::vector data; ///< MuE axis for each (T9, log_rhoYe) pair (the table is ragged in mu_e). This is also where the payloads are stored. }; /** @@ -216,4 +229,5 @@ namespace gridfire::rates::weak { return os; } }; -} \ No newline at end of file +} + diff --git a/src/include/gridfire/solver/strategies/CVODE_solver_strategy.h b/src/include/gridfire/solver/strategies/CVODE_solver_strategy.h index be986cda..6917a1e7 100644 --- a/src/include/gridfire/solver/strategies/CVODE_solver_strategy.h +++ b/src/include/gridfire/solver/strategies/CVODE_solver_strategy.h @@ -21,11 +21,15 @@ // Include headers for linear solvers and N_Vectors // We will use preprocessor directives to select the correct ones -#include // For CVDls (serial dense linear solver) #include #include #include +// These are the possible N_Vector implementations. We use the compiler defines to select the most appropriate one for the build. +// If none are defined, we default to serial. + +// For precompiled binaries we will need to ensure that we have versions built for all three types (ideally with some runtime +// checks that will fail gracefully if the user tries to use an unsupported type). #ifdef SUNDIALS_HAVE_OPENMP #include #endif @@ -103,7 +107,7 @@ namespace gridfire::solver { * if present after a step, it is rethrown for upstream handling. * - Prints/collects diagnostics per step (step size, energy, solver iterations). * - On trigger activation, rebuilds CVODE resources to reflect a changed network and - * reinitializes the state using the latest engine composition, preserving energy. + * reinitialized the state using the latest engine composition, preserving energy. * - At the end, converts molar abundances to mass fractions and assembles NetOut, * including derivatives of energy w.r.t. T and rho from the engine. * @@ -250,7 +254,7 @@ namespace gridfire::solver { * @brief Compute and print per-component error ratios; run diagnostic helpers. * * Gathers CVODE's estimated local errors, converts the state to a Composition, and prints a - * sorted table of species with highest error ratios; then invokes diagnostic routines to + * sorted table of species with the highest error ratios; then invokes diagnostic routines to * inspect Jacobian stiffness and species balance. */ void log_step_diagnostics(const CVODEUserData& user_data) const; diff --git a/src/include/gridfire/utils/logging.h b/src/include/gridfire/utils/logging.h index e583dc71..261db620 100644 --- a/src/include/gridfire/utils/logging.h +++ b/src/include/gridfire/utils/logging.h @@ -1,10 +1,9 @@ #pragma once #include "gridfire/engine/engine_abstract.h" +#include "fourdst/composition/composition.h" #include -#include - namespace gridfire::utils { /** @@ -17,7 +16,7 @@ namespace gridfire::utils { * * @param engine A constant reference to a `DynamicEngine` object, used to * calculate the species timescales. - * @param Y A vector of the molar abundances (mol/g) for each species. + * @param composition The current composition of the plasma * @param T9 The temperature in units of 10^9 K. * @param rho The plasma density in g/cm^3. * @return A std::string containing the formatted table of species and their diff --git a/src/lib/engine/engine_graph.cpp b/src/lib/engine/engine_graph.cpp index 39027f66..431a171e 100644 --- a/src/lib/engine/engine_graph.cpp +++ b/src/lib/engine/engine_graph.cpp @@ -79,7 +79,19 @@ namespace gridfire { // --- The public facing interface can always use the precomputed version since taping is done internally --- return calculateAllDerivativesUsingPrecomputation(comp, bare_rates, bare_reverse_rates, T9, rho); } else { - return calculateAllDerivatives(comp.getMolarAbundanceVector(), T9, rho, Ye, mue); + return calculateAllDerivatives( + comp.getMolarAbundanceVector(), + T9, + rho, + Ye, + mue, + [&comp](const fourdst::atomic::Species& species) -> std::optional { + if (comp.contains(species)) { + return comp.getSpeciesIndex(species); // Return the index of the species in the composition + } + return std::nullopt; // Species not found in the composition + } + ); } } @@ -305,11 +317,18 @@ namespace gridfire { return 0.0; // If reverse reactions are not used, return 0.0 } const double temp = T9 * 1e9; // Convert T9 to Kelvin - const double Ye = comp.getElectronAbundance(); - // TODO: This is a dummy value for the electron chemical potential. We eventually need to replace this with an EOS call. - const double mue = 5.0e-3 * std::pow(rho * Ye, 1.0 / 3.0) + 0.5 * T9; + // Reverse reactions are only relevant for strong reactions (at least during the vast majority of stellar evolution) + // So here we just let these be dummy values since we know + // 1. The reaction should always be strong + // 2. The strong reaction rate is independent of Ye and mue + // + // In development builds the assert below will confirm this + constexpr double Ye = 0.0; + constexpr double mue = 0.0; + // It is a logic error to call this function on a weak reaction + assert(reaction.type() != gridfire::reaction::ReactionType::WEAK); // In debug builds we check the units on kB to ensure it is in erg/K. This is removed in release builds to avoid overhead. (Note assert is a no-op in release builds) assert(Constants::getInstance().get("kB").unit == "erg / K"); @@ -317,7 +336,8 @@ namespace gridfire { const double kBMeV = m_constants.kB * 624151; // Convert kB to MeV/K NOTE: This relies on the fact that m_constants.kB is in erg/K! const double expFactor = std::exp(-reaction.qValue() / (kBMeV * temp)); double reverseRate = 0.0; - const double forwardRate = reaction.calculate_rate(T9, rho, Ye, mue, comp.getMolarAbundanceVector(), m_indexToSpeciesMap); + // We also let Y be an empy vector since the strong reaction rate is independent of Y + const double forwardRate = reaction.calculate_rate(T9, rho, Ye, mue, {}, m_indexToSpeciesMap); if (reaction.reactants().size() == 2 && reaction.products().size() == 2) { reverseRate = calculateReverseRateTwoBody(reaction, T9, forwardRate, expFactor); @@ -696,10 +716,20 @@ namespace gridfire { const double Ye = comp.getElectronAbundance(); - // TODO: This is a dummy placeholder which must be replaced with an EOS call - const double mue = 5.0e-3 * std::pow(rho * Ye, 1.0 / 3.0) + 0.5 * T9; - - return calculateMolarReactionFlow(reaction, comp.getMolarAbundanceVector(), T9, rho, Ye, mue); + return calculateMolarReactionFlow( + reaction, + comp.getMolarAbundanceVector(), + T9, + rho, + Ye, + 0.0, + [&comp](const fourdst::atomic::Species& species) -> std::optional { + if (comp.contains(species)) { // Species present in the composition + return comp.getSpeciesIndex(species); + } + return std::nullopt; // Species not present + } + ); } void GraphEngine::generateJacobianMatrix( @@ -908,10 +938,20 @@ namespace gridfire { const double rho ) const { const double Ye = comp.getElectronAbundance(); - // TODO: This is a dummy placeholder which must be replaced with an EOS call - const double mue = 5.0e-3 * std::pow(rho * Ye, 1.0 / 3.0) + 0.5 * T9; - auto [dydt, _] = calculateAllDerivatives(comp.getMolarAbundanceVector(), T9, rho, Ye, mue); + auto [dydt, _] = calculateAllDerivatives( + comp.getMolarAbundanceVector(), + T9, + rho, + Ye, + 0.0, + [&comp](const fourdst::atomic::Species& species) -> std::optional { + if (comp.contains(species)) { // Species present in the composition + return comp.getSpeciesIndex(species); + } + return std::nullopt; // Species not present + } + ); std::unordered_map speciesTimescales; speciesTimescales.reserve(m_networkSpecies.size()); for (const auto& species : m_networkSpecies) { @@ -930,17 +970,39 @@ namespace gridfire { const double rho ) const { const double Ye = comp.getElectronAbundance(); - // TODO: This is a dummy placeholder which must be replaced with an EOS call - const double mue = 5.0e-3 * std::pow(rho * Ye, 1.0 / 3.0) + 0.5 * T9; + const std::vector& Y = comp.getMolarAbundanceVector(); + + auto speciesLookup = [&comp](const fourdst::atomic::Species& species) -> std::optional { + if (comp.contains(species)) { // Species present in the composition + return comp.getSpeciesIndex(species); + } + return std::nullopt; // Species not present + }; + + auto [dydt, _] = calculateAllDerivatives( + Y, + T9, + rho, + Ye, + 0.0, + speciesLookup + ); - auto [dydt, _] = calculateAllDerivatives(comp.getMolarAbundanceVector(), T9, rho, Ye, mue); std::unordered_map speciesDestructionTimescales; speciesDestructionTimescales.reserve(m_networkSpecies.size()); for (const auto& species : m_networkSpecies) { double netDestructionFlow = 0.0; for (const auto& reaction : m_reactions) { if (reaction->stoichiometry(species) < 0) { - const auto flow = calculateMolarReactionFlow(*reaction, comp.getMolarAbundanceVector(), T9, rho, Ye, mue); + const auto flow = calculateMolarReactionFlow( + *reaction, + Y, + T9, + rho, + Ye, + 0.0, + speciesLookup + ); netDestructionFlow += flow; } } @@ -979,7 +1041,7 @@ namespace gridfire { m_logger->flush_log(); throw std::runtime_error("Cannot record AD tape: No species in the network."); } - const size_t numADInputs = numSpecies + 2; // Note here that by not letting T9 and rho be independent variables, we are constraining the network to a constant temperature and density during each evaluation. + const size_t numADInputs = numSpecies + 2; // Y + T9 + rho // --- CppAD Tape Recording --- // 1. Declare independent variable (adY) @@ -1004,13 +1066,22 @@ namespace gridfire { const CppAD::AD adRho = adInput[numSpecies + 1]; // Dummy values for Ye and mue to let taping happen - const CppAD::AD adYe = 1.0; - const CppAD::AD adMue = 1.0; + const CppAD::AD adYe = 1e6; + const CppAD::AD adMue = 10.0; // 5. Call the actual templated function // We let T9 and rho be constant, so we pass them as fixed values. - auto [dydt, nuclearEnergyGenerationRate] = calculateAllDerivatives>(adY, adT9, adRho, adYe, adMue); + auto [dydt, nuclearEnergyGenerationRate] = calculateAllDerivatives>( + adY, + adT9, + adRho, + adYe, + adMue, + [&](const fourdst::atomic::Species& querySpecies) -> size_t { + return m_speciesToIndexMap.at(querySpecies); // TODO: This is bad, needs to be fixed + } + ); // Extract the raw vector from the associative map std::vector> dydt_vec; @@ -1049,10 +1120,19 @@ namespace gridfire { const CppAD::AD adRho = adInput[numSpecies + 1]; // Dummy values for Ye and mue to let taping happen - const CppAD::AD adYe = 1.0; + const CppAD::AD adYe = 1e6; const CppAD::AD adMue = 1.0; - auto [dydt, nuclearEnergyGenerationRate] = calculateAllDerivatives>(adY, adT9, adRho, adYe, adMue); + auto [dydt, nuclearEnergyGenerationRate] = calculateAllDerivatives>( + adY, + adT9, + adRho, + adYe, + adMue, + [&](const fourdst::atomic::Species& querySpecies) -> size_t { + return m_speciesToIndexMap.at(querySpecies); // TODO: This is bad, needs to be fixed + } + ); std::vector> adOutput(1); adOutput[0] = nuclearEnergyGenerationRate; @@ -1157,8 +1237,10 @@ namespace gridfire { if ( p != 0) { return false; } const double T9 = tx[0]; - // TODO: Handle rho and Y - const double reverseRate = m_engine.calculateReverseRate(m_reaction, T9, 0, {}); + // This is an interesting problem because the reverse rate should only ever be computed for strong reactions + // Which do not depend on rho or Y. However, the signature requires them... + // For now, we just pass dummy values for rho and Y + const double reverseRate = m_engine.calculateReverseRate(m_reaction, T9, 0.0, {}); // std::cout << m_reaction.peName() << " reverseRate: " << reverseRate << " at T9: " << T9 << "\n"; ty[0] = reverseRate; // Store the reverse rate in the output vector @@ -1178,7 +1260,9 @@ namespace gridfire { const double T9 = tx[0]; const double reverseRate = ty[0]; - // TODO: Handle rho and Y + // This is an interesting problem because the reverse rate should only ever be computed for strong reactions + // Which do not depend on rho or Y. However, the signature requires them... + // For now, we just pass dummy values for rho and Y const double derivative = m_engine.calculateReverseRateTwoBodyDerivative(m_reaction, T9, 0, {}, reverseRate); px[0] = py[0] * derivative; // Return the derivative of the reverse rate with respect to T9 diff --git a/src/lib/engine/procedures/construction.cpp b/src/lib/engine/procedures/construction.cpp index 02535ba3..544d6c72 100644 --- a/src/lib/engine/procedures/construction.cpp +++ b/src/lib/engine/procedures/construction.cpp @@ -25,10 +25,11 @@ namespace gridfire { ReactionSet build_nuclear_network( - const Composition& composition, - const rates::weak::WeakRateInterpolator& weak_interpolator, - BuildDepthType maxLayers, - bool reverse_reaclib) { + const Composition& composition, + const rates::weak::WeakRateInterpolator& weakInterpolator, + BuildDepthType maxLayers, + bool reverse + ) { int depth; if (std::holds_alternative(maxLayers)) { depth = static_cast(std::get(maxLayers)); @@ -47,40 +48,52 @@ namespace gridfire { // Clone all relevant REACLIB reactions into the master pool const auto& allReaclibReactions = reaclib::get_all_reaclib_reactions(); for (const auto& reaction : allReaclibReactions) { - if (reaction->is_reverse() == reverse_reaclib) { + if (reaction->is_reverse() == reverse) { master_reaction_pool.add_reaction(reaction->clone()); } } - for (const auto& parent_species: weak_interpolator.available_isotopes()) { - master_reaction_pool.add_reaction( - std::make_unique( - parent_species, - rates::weak::WeakReactionType::BETA_PLUS_DECAY, - weak_interpolator - ) + for (const auto& parent_species: weakInterpolator.available_isotopes()) { + std::expected upProduct = fourdst::atomic::az_to_species( + parent_species.a(), + parent_species.z() + 1 ); - master_reaction_pool.add_reaction( - std::make_unique( - parent_species, - rates::weak::WeakReactionType::BETA_MINUS_DECAY, - weak_interpolator - ) - ); - master_reaction_pool.add_reaction( - std::make_unique( - parent_species, - rates::weak::WeakReactionType::ELECTRON_CAPTURE, - weak_interpolator - ) - ); - master_reaction_pool.add_reaction( - std::make_unique( - parent_species, - rates::weak::WeakReactionType::POSITRON_CAPTURE, - weak_interpolator - ) + std::expected downProduct = fourdst::atomic::az_to_species( + parent_species.a(), + parent_species.z() - 1 ); + if (downProduct.has_value()) { // Only add the reaction if the Species map contains the product + master_reaction_pool.add_reaction( + std::make_unique( + parent_species, + rates::weak::WeakReactionType::BETA_PLUS_DECAY, + weakInterpolator + ) + ); + master_reaction_pool.add_reaction( + std::make_unique( + parent_species, + rates::weak::WeakReactionType::ELECTRON_CAPTURE, + weakInterpolator + ) + ); + } + if (upProduct.has_value()) { // Only add the reaction if the Species map contains the product + master_reaction_pool.add_reaction( + std::make_unique( + parent_species, + rates::weak::WeakReactionType::BETA_MINUS_DECAY, + weakInterpolator + ) + ); + master_reaction_pool.add_reaction( + std::make_unique( + parent_species, + rates::weak::WeakReactionType::POSITRON_CAPTURE, + weakInterpolator + ) + ); + } } // --- Step 2: Use non-owning raw pointers for the fast build algorithm --- @@ -140,7 +153,13 @@ namespace gridfire { break; } - LOG_TRACE_L1(logger, "Layer {}: Collected {} new reactions. New products this layer: {}", collectedReactionPtrs.size() - collectedReactionPtrs.size(), newProductsThisLayer.size()); + LOG_TRACE_L1( + logger, + "Layer {}: Collected {} new reactions. New products this layer: {}", + layer, + collectedReactionPtrs.size() - collectedReactionPtrs.size(), + newProductsThisLayer.size() + ); availableSpecies.insert(newProductsThisLayer.begin(), newProductsThisLayer.end()); remainingReactions = std::move(reactionsForNextPass); } diff --git a/src/lib/engine/procedures/priming.cpp b/src/lib/engine/procedures/priming.cpp index 52673b0b..93ae9664 100644 --- a/src/lib/engine/procedures/priming.cpp +++ b/src/lib/engine/procedures/priming.cpp @@ -17,7 +17,7 @@ namespace gridfire { const reaction::Reaction* findDominantCreationChannel ( const DynamicEngine& engine, const Species& species, - const fourdst::composition::Composition &comp, + const Composition &comp, const double T9, const double rho ) { diff --git a/src/lib/engine/views/engine_multiscale.cpp b/src/lib/engine/views/engine_multiscale.cpp index 81fc596a..a86791cb 100644 --- a/src/lib/engine/views/engine_multiscale.cpp +++ b/src/lib/engine/views/engine_multiscale.cpp @@ -17,7 +17,13 @@ namespace { using namespace fourdst::atomic; - std::vector packCompositionToVector(const fourdst::composition::Composition& composition, const gridfire::GraphEngine& engine) { + //TODO: Replace all calls to this function with composition.getMolarAbundanceVector() so that + // we don't have to keep this function around. (Cant do this right now because there is not a + // guarantee that this function will return the same ordering as the canonical vector representation) + std::vector packCompositionToVector( + const fourdst::composition::Composition& composition, + const gridfire::GraphEngine& engine + ) { std::vector Y(engine.getNetworkSpecies().size(), 0.0); const auto& allSpecies = engine.getNetworkSpecies(); for (size_t i = 0; i < allSpecies.size(); ++i) { @@ -780,6 +786,7 @@ namespace gridfire { LOG_TRACE_L1(m_logger, "Partitioning by timescale..."); const auto result= m_baseEngine.getSpeciesDestructionTimescales(comp, T9, rho); const auto netTimescale = m_baseEngine.getSpeciesTimescales(comp, T9, rho); + if (!result) { LOG_ERROR(m_logger, "Failed to get species destruction timescales due to stale engine state"); m_logger->flush_log(); @@ -792,6 +799,14 @@ namespace gridfire { } const std::unordered_map& all_timescales = result.value(); const std::unordered_map& net_timescales = netTimescale.value(); + + for (const auto& [species, destructionTimescale] : all_timescales) { + std::cout << "Species: " << species.name() + << ", Destruction Timescale: " << (std::isfinite(destructionTimescale) ? std::to_string(destructionTimescale) : "inf") + << " s, Net Timescale: " << (std::isfinite(net_timescales.at(species)) ? std::to_string(net_timescales.at(species)) : "inf") + << " s\n"; + } + const auto& all_species = m_baseEngine.getNetworkSpecies(); std::vector> sorted_timescales; @@ -1075,6 +1090,11 @@ namespace gridfire { normalized_composition.setMassFraction(species, 0.0); } } + bool normCompFinalizedOkay = normalized_composition.finalize(true); + if (!normCompFinalizedOkay) { + LOG_ERROR(m_logger, "Failed to finalize composition before QSE solve."); + throw std::runtime_error("Failed to finalize composition before QSE solve."); + } Eigen::VectorXd Y_scale(algebraic_species.size()); Eigen::VectorXd v_initial(algebraic_species.size()); @@ -1330,10 +1350,18 @@ namespace gridfire { Eigen::VectorXd y_qse = m_Y_scale.array() * v_qse.array().sinh(); // Convert to physical abundances using asinh scaling for (const auto& species: m_qse_solve_species) { - if (!comp_trial.contains(species)) { + if (!comp_trial.hasSymbol(std::string(species.name()))) { comp_trial.registerSpecies(species); } - comp_trial.setMassFraction(species, y_qse[static_cast(m_qse_solve_species_index_map.at(species))]); + const double molarAbundance = y_qse[static_cast(m_qse_solve_species_index_map.at(species))]; + const double massFraction = molarAbundance * species.mass(); + comp_trial.setMassFraction(species, massFraction); + } + + const bool didFinalize = comp_trial.finalize(false); + if (!didFinalize) { + std::string msg = std::format("Failed to finalize composition (comp_trial) in {} at line {}", __FILE__, __LINE__); + throw std::runtime_error(msg); } const auto result = m_view->getBaseEngine().calculateRHSAndEnergy(comp_trial, m_T9, m_rho); @@ -1357,10 +1385,18 @@ namespace gridfire { Eigen::VectorXd y_qse = m_Y_scale.array() * v_qse.array().sinh(); // Convert to physical abundances using asinh scaling for (const auto& species: m_qse_solve_species) { - if (!comp_trial.contains(species)) { + if (!comp_trial.hasSymbol(std::string(species.name()))) { comp_trial.registerSpecies(species); } - comp_trial.setMassFraction(species, y_qse[static_cast(m_qse_solve_species_index_map.at(species))]); + const double molarAbundance = y_qse[static_cast(m_qse_solve_species_index_map.at(species))]; + const double massFraction = molarAbundance * species.mass(); + comp_trial.setMassFraction(species, massFraction); + } + + const bool didFinalize = comp_trial.finalize(false); + if (!didFinalize) { + std::string msg = std::format("Failed to finalize composition (comp_trial) in {} at line {}", __FILE__, __LINE__); + throw std::runtime_error(msg); } m_view->getBaseEngine().generateJacobianMatrix(comp_trial, m_T9, m_rho); @@ -1368,14 +1404,16 @@ namespace gridfire { const long N = static_cast(m_qse_solve_species.size()); J_qse.resize(N, N); long rowID = 0; - long colID = 0; for (const auto& rowSpecies : m_qse_solve_species) { + long colID = 0; for (const auto& colSpecies: m_qse_solve_species) { - J_qse(rowID++, colID++) = m_view->getBaseEngine().getJacobianMatrixEntry( + J_qse(rowID, colID) = m_view->getBaseEngine().getJacobianMatrixEntry( rowSpecies, colSpecies ); + colID += 1; } + rowID += 1; } // Chain rule for asinh scaling: diff --git a/src/lib/partition/partition_ground.cpp b/src/lib/partition/partition_ground.cpp index 1bc5c457..c65f4c41 100644 --- a/src/lib/partition/partition_ground.cpp +++ b/src/lib/partition/partition_ground.cpp @@ -19,7 +19,7 @@ namespace gridfire::partition { const int a, const double T9 ) const { - LOG_TRACE_L2(m_logger, "Evaluating ground state partition function for Z={} A={} T9={}", z, a, T9); + LOG_TRACE_L3(m_logger, "Evaluating ground state partition function for Z={} A={} T9={}", z, a, T9); const int key = make_key(z, a); const double spin = m_ground_state_spin.at(key); return (2.0 * spin) + 1.0; @@ -30,7 +30,7 @@ namespace gridfire::partition { const int a, const double T9 ) const { - LOG_TRACE_L2(m_logger, "Evaluating derivative of ground state partition function for Z={} A={} T9={}", z, a, T9); + LOG_TRACE_L3(m_logger, "Evaluating derivative of ground state partition function for Z={} A={} T9={}", z, a, T9); return 0.0; } diff --git a/src/lib/partition/partition_rauscher_thielemann.cpp b/src/lib/partition/partition_rauscher_thielemann.cpp index 6c037a80..4949ff72 100644 --- a/src/lib/partition/partition_rauscher_thielemann.cpp +++ b/src/lib/partition/partition_rauscher_thielemann.cpp @@ -44,21 +44,21 @@ namespace gridfire::partition { const int a, const double T9 ) const { - LOG_TRACE_L2(m_logger, "Evaluating Rauscher-Thielemann partition function for Z={} A={} T9={}", z, a, T9); + LOG_TRACE_L3(m_logger, "Evaluating Rauscher-Thielemann partition function for Z={} A={} T9={}", z, a, T9); const auto [bound, data, upperIndex, lowerIndex] = find(z, a, T9); switch (bound) { case FRONT: { - LOG_TRACE_L2(m_logger, "Using FRONT bound for Z={} A={} T9={}", z, a, T9); + LOG_TRACE_L3(m_logger, "Using FRONT bound for Z={} A={} T9={}", z, a, T9); return data.normalized_g_values.front() * (2.0 * data.ground_state_spin + 1.0); } case BACK: { - LOG_TRACE_L2(m_logger, "Using BACK bound for Z={} A={} T9={}", z, a, T9); + LOG_TRACE_L3(m_logger, "Using BACK bound for Z={} A={} T9={}", z, a, T9); return data.normalized_g_values.back() * (2.0 * data.ground_state_spin + 1.0); } case MIDDLE: { - LOG_TRACE_L2(m_logger, "Using MIDDLE bound for Z={} A={} T9={}", z, a, T9); + LOG_TRACE_L3(m_logger, "Using MIDDLE bound for Z={} A={} T9={}", z, a, T9); } } @@ -79,10 +79,10 @@ namespace gridfire::partition { const int a, const double T9 ) const { - LOG_TRACE_L2(m_logger, "Evaluating derivative of Rauscher-Thielemann partition function for Z={} A={} T9={}", z, a, T9); + LOG_TRACE_L3(m_logger, "Evaluating derivative of Rauscher-Thielemann partition function for Z={} A={} T9={}", z, a, T9); const auto [bound, data, upperIndex, lowerIndex] = find(z, a, T9); if (bound == FRONT || bound == BACK) { - LOG_TRACE_L2(m_logger, "Derivative is zero for Z={} A={} T9={} (bound: {})", z, a, T9, bound == FRONT ? "FRONT" : "BACK"); + LOG_TRACE_L3(m_logger, "Derivative is zero for Z={} A={} T9={} (bound: {})", z, a, T9, bound == FRONT ? "FRONT" : "BACK"); return 0.0; // Derivative is zero at the boundaries } const auto [T9_high, G_norm_high, T9_low, G_norm_low] = get_interpolation_points( diff --git a/src/lib/reaction/weak/weak.cpp b/src/lib/reaction/weak/weak.cpp index 428f9008..e47e28c4 100644 --- a/src/lib/reaction/weak/weak.cpp +++ b/src/lib/reaction/weak/weak.cpp @@ -16,6 +16,11 @@ namespace { + std::unordered_map SpeciesErrorTypeMap = { + {fourdst::atomic::SpeciesErrorType::ELEMENT_SYMBOL_NOT_FOUND, "Element symbol not found (Z out of range)"}, + {fourdst::atomic::SpeciesErrorType::SPECIES_SYMBOL_NOT_FOUND, "Species symbol not found ((A,Z) out of range)"} + }; + fourdst::atomic::Species resolve_weak_product( const gridfire::rates::weak::WeakReactionType type, const fourdst::atomic::Species& reactant @@ -23,25 +28,36 @@ namespace { using namespace fourdst::atomic; using namespace gridfire::rates::weak; - std::optional product; // Use optional so that we can start in a valid "null" state + int zMod = 0; switch (type) { case WeakReactionType::BETA_MINUS_DECAY: - product = az_to_species(reactant.a(), reactant.z() + 1); - return product.value(); + zMod = 1; + break; case WeakReactionType::BETA_PLUS_DECAY: - product = az_to_species(reactant.a(), reactant.z() - 1); - return product.value(); - case WeakReactionType::ELECTRON_CAPTURE: - product = az_to_species(reactant.a(), reactant.z() - 1); - return product.value(); + zMod = -1; + break; case WeakReactionType::POSITRON_CAPTURE: - product = az_to_species(reactant.a(), reactant.z() + 1); + zMod = 1; + break; + case WeakReactionType::ELECTRON_CAPTURE: + zMod = -1; break; } - if (!product.has_value()) { - throw std::runtime_error("Failed to resolve weak reaction product for reactant: " + std::string(reactant.name())); + std::expected product = az_to_species(reactant.a(), reactant.z() + zMod); + + if (product.has_value()) { + return product.value(); } - return product.value(); + const std::string msg = std::format( + "Failed to resolve weak reaction product (A: {}, Z: {}) for reactant {} (looked up A: {}, Z: {}): {}", + reactant.a(), + reactant.z(), + reactant.name(), + reactant.a(), + reactant.z() + zMod, + SpeciesErrorTypeMap.at(product.error()) + ); + throw std::runtime_error(msg); } std::string resolve_weak_id( @@ -77,7 +93,16 @@ namespace gridfire::rates::weak { // ReSharper disable once CppUseStructuredBinding for (const auto& weak_reaction_record : UNIFIED_WEAK_DATA) { - Species species = az_to_species(weak_reaction_record.A, weak_reaction_record.Z); + std::expected species_result = az_to_species(weak_reaction_record.A, weak_reaction_record.Z); + if (!species_result.has_value()) { + const SpeciesErrorType type = species_result.error(); + const std::string msg = std::format( + "Failed to load weak reaction data for (A={}, Z={}) with error: {}", + weak_reaction_record.A, weak_reaction_record.Z, SpeciesErrorTypeMap.at(type) + ); + throw std::runtime_error(msg); + } + const Species& species = species_result.value(); if (weak_reaction_record.log_beta_minus > GRIDFIRE_WEAK_REACTION_LIB_SENTINEL) { m_weak_network[species].push_back( @@ -148,7 +173,7 @@ namespace gridfire::rates::weak { std::expected, WeakMapError> WeakReactionMap::get_species_reactions( const std::string &species_name) const { - const fourdst::atomic::Species species = fourdst::atomic::species.at(species_name); + const fourdst::atomic::Species& species = fourdst::atomic::species.at(species_name); if (m_weak_network.contains(species)) { return m_weak_network.at(species); } @@ -284,9 +309,7 @@ namespace gridfire::rates::weak { case WeakReactionType::POSITRON_CAPTURE: Q_MeV = nuclearMassDiff_MeV + 2.0 * electronMass_MeV; break; - case WeakReactionType::BETA_MINUS_DECAY: - Q_MeV = nuclearMassDiff_MeV; - break; + case WeakReactionType::BETA_MINUS_DECAY: // Same as electron capture so we can simply fall through case WeakReactionType::ELECTRON_CAPTURE: Q_MeV = nuclearMassDiff_MeV; break; @@ -306,8 +329,7 @@ namespace gridfire::rates::weak { static_cast(m_reactant_a), static_cast(m_reactant_z), T9, - std::log10(rho * Ye), - mue + std::log10(rho * Ye) ); if (!rates.has_value()) { @@ -374,8 +396,7 @@ namespace gridfire::rates::weak { static_cast(m_reactant_a), static_cast(m_reactant_z), T9, - log_rhoYe, - mue + log_rhoYe ); if (!rates.has_value()) { const InterpolationErrorType type = rates.error().type; @@ -386,9 +407,22 @@ namespace gridfire::rates::weak { throw std::runtime_error(msg); } - // TODO: Finish implementing this (just need a switch statement) - return 0.0; - + double logRate = 0.0; + switch (m_type) { + case WeakReactionType::BETA_MINUS_DECAY: + logRate = rates->d_log_beta_minus[0]; + break; + case WeakReactionType::BETA_PLUS_DECAY: + logRate = rates->d_log_beta_plus[0]; + break; + case WeakReactionType::ELECTRON_CAPTURE: + logRate = rates->d_log_electron_capture[0]; + break; + case WeakReactionType::POSITRON_CAPTURE: + logRate = rates->d_log_positron_capture[0]; + break; + } + return logRate; } reaction::ReactionType WeakReaction::type() const { @@ -437,9 +471,7 @@ namespace gridfire::rates::weak { case WeakReactionType::BETA_MINUS_DECAY: logNeutrinoLoss = payload.log_antineutrino_loss_bd; break; - case WeakReactionType::BETA_PLUS_DECAY: - logNeutrinoLoss = payload.log_neutrino_loss_ec; - break; + case WeakReactionType::BETA_PLUS_DECAY: // Same as electron capture so we can simply fall through case WeakReactionType::ELECTRON_CAPTURE: logNeutrinoLoss = payload.log_neutrino_loss_ec; break; @@ -450,6 +482,7 @@ namespace gridfire::rates::weak { return logNeutrinoLoss; } + // Note that the input vector tx is of size 3: [T9, log10(rho*Ye), mu_e] bool WeakReaction::AtomicWeakRate::forward ( const size_t p, const size_t q, @@ -464,20 +497,18 @@ namespace gridfire::rates::weak { } const double T9 = tx[0]; const double log10_rhoye = tx[1]; - const double mu_e = tx[2]; const std::expected result = m_interpolator.get_rates( static_cast(m_a), static_cast(m_z), T9, - log10_rhoye, - mu_e + log10_rhoye ); if (!result.has_value()) { const InterpolationErrorType type = result.error().type; const std::string msg = std::format( - "Failed to interpolate weak rate for (A={}, Z={}) at T9={}, log10(rho*Ye)={}, mu_e={} with error: {}", - m_a, m_z, T9, log10_rhoye, mu_e, InterpolationErrorTypeMap.at(type) + "Failed to interpolate weak rate for (A={}, Z={}) at T9={}, log10(ρ Ye)={}, with error: {}", + m_a, m_z, T9, log10_rhoye, InterpolationErrorTypeMap.at(type) ); throw std::runtime_error(msg); } @@ -501,7 +532,7 @@ namespace gridfire::rates::weak { } if (vx.size() > 0) { // Set up the sparsity pattern. This is saying that all input variables affect the output variable. - const bool any_input_varies = vx[0] || vx[1] || vx[2]; + const bool any_input_varies = vx[0] || vx[1]; vy[0] = any_input_varies; vy[1] = any_input_varies; } @@ -517,7 +548,6 @@ namespace gridfire::rates::weak { ) { const double T9 = tx[0]; const double log10_rhoye = tx[1]; - const double mu_e = tx[2]; const double forwardPassRate = ty[0]; // This is the rate from the forward pass. const double forwardPassNeutrinoLossRate = ty[1]; // This is the neutrino loss rate from the forward pass. @@ -526,55 +556,47 @@ namespace gridfire::rates::weak { static_cast(m_a), static_cast(m_z), T9, - log10_rhoye, - mu_e + log10_rhoye ); if (!result.has_value()) { const InterpolationErrorType type = result.error().type; const std::string msg = std::format( - "Failed to interpolate weak rate derivatives for (A={}, Z={}) at T9={}, log10(rho*Ye)={}, mu_e={} with error: {}", - m_a, m_z, T9, log10_rhoye, mu_e, InterpolationErrorTypeMap.at(type) + "Failed to interpolate weak rate derivatives for (A={}, Z={}) at T9={}, log10(ρ Ye)={}, with error: {}", + m_a, m_z, T9, log10_rhoye, InterpolationErrorTypeMap.at(type) ); throw std::runtime_error(msg); } + // ReSharper disable once CppUseStructuredBinding const WeakRateDerivatives derivatives = result.value(); - std::array dLogRate; // d(rate)/dT9, d(rate)/dlogRhoYe, d(rate)/dMuE - std::array dLogNuLoss; // d(nu loss)/dT9, d(nu loss)/dlogRhoYe, d(nu loss)/dMuE + std::array dLogRate{}; // d(rate)/dT9, d(rate)/dlogRhoYe + std::array dLogNuLoss{}; // d(nu loss)/dT9, d(nu loss)/dlogRhoYe switch (m_type) { case WeakReactionType::BETA_MINUS_DECAY: dLogRate[0] = derivatives.d_log_beta_minus[0]; dLogRate[1] = derivatives.d_log_beta_minus[1]; - dLogRate[2] = derivatives.d_log_beta_minus[2]; dLogNuLoss[0] = derivatives.d_log_antineutrino_loss_bd[0]; dLogNuLoss[1] = derivatives.d_log_antineutrino_loss_bd[1]; - dLogNuLoss[2] = derivatives.d_log_antineutrino_loss_bd[2]; break; case WeakReactionType::BETA_PLUS_DECAY: dLogRate[0] = derivatives.d_log_beta_plus[0]; dLogRate[1] = derivatives.d_log_beta_plus[1]; - dLogRate[2] = derivatives.d_log_beta_plus[2]; dLogNuLoss[0] = derivatives.d_log_neutrino_loss_ec[0]; dLogNuLoss[1] = derivatives.d_log_neutrino_loss_ec[1]; - dLogNuLoss[2] = derivatives.d_log_neutrino_loss_ec[2]; break; case WeakReactionType::ELECTRON_CAPTURE: dLogRate[0] = derivatives.d_log_electron_capture[0]; dLogRate[1] = derivatives.d_log_electron_capture[1]; - dLogRate[2] = derivatives.d_log_electron_capture[2]; dLogNuLoss[0] = derivatives.d_log_neutrino_loss_ec[0]; dLogNuLoss[1] = derivatives.d_log_neutrino_loss_ec[1]; - dLogNuLoss[2] = derivatives.d_log_neutrino_loss_ec[2]; break; case WeakReactionType::POSITRON_CAPTURE: dLogRate[0] = derivatives.d_log_positron_capture[0]; dLogRate[1] = derivatives.d_log_positron_capture[1]; - dLogRate[2] = derivatives.d_log_positron_capture[2]; dLogNuLoss[0] = derivatives.d_log_antineutrino_loss_bd[0]; dLogNuLoss[1] = derivatives.d_log_antineutrino_loss_bd[1]; - dLogNuLoss[2] = derivatives.d_log_antineutrino_loss_bd[2]; break; } @@ -583,12 +605,10 @@ namespace gridfire::rates::weak { // Contributions from the reaction rate (output 0) px[0] = py[0] * forwardPassRate * ln10 * dLogRate[0]; px[1] = py[0] * forwardPassRate * ln10 * dLogRate[1]; - px[2] = py[0] * forwardPassRate * ln10 * dLogRate[2]; // Contributions from the neutrino loss rate (output 1) px[0] += py[1] * forwardPassNeutrinoLossRate * ln10 * dLogNuLoss[0]; px[1] += py[1] * forwardPassNeutrinoLossRate * ln10 * dLogNuLoss[1]; - px[2] += py[1] * forwardPassNeutrinoLossRate * ln10 * dLogNuLoss[2]; return true; @@ -602,7 +622,6 @@ namespace gridfire::rates::weak { std::set all_input_deps; all_input_deps.insert(r[0].begin(), r[0].end()); all_input_deps.insert(r[1].begin(), r[1].end()); - all_input_deps.insert(r[2].begin(), r[2].end()); // What this is saying is that both output variables depend on all input variables. s[0] = all_input_deps; @@ -623,7 +642,6 @@ namespace gridfire::rates::weak { st[0] = all_output_deps; st[1] = all_output_deps; - st[2] = all_output_deps; return true; } diff --git a/src/lib/reaction/weak/weak_interpolator.cpp b/src/lib/reaction/weak/weak_interpolator.cpp index a96c7a6f..2158ca4a 100644 --- a/src/lib/reaction/weak/weak_interpolator.cpp +++ b/src/lib/reaction/weak/weak_interpolator.cpp @@ -13,54 +13,61 @@ #include "fourdst/composition/species.h" +#include "quill/LogMacros.h" + namespace gridfire::rates::weak { WeakRateInterpolator::WeakRateInterpolator(const RowDataTable &raw_data) { + // Group all raw data rows by their isotope ID. std::map> grouped_rows; for (const auto& row : raw_data) { grouped_rows[pack_isotope_id(row.A, row.Z)].push_back(&row); } + // Process each isotope's data to build a simple 2D grid. for (auto const& [isotope_id, rows] : grouped_rows) { IsotopeGrid grid; - std::set unique_t9, unique_rhoYe, unique_mue; + // Establish the T9 and log(rho*Ye) axes + std::set unique_t9, unique_rhoYe; for (const auto* row : rows) { unique_t9.emplace(row->t9); unique_rhoYe.emplace(row->log_rhoye); - unique_mue.emplace(row->mu_e); } - grid.t9_axis.reserve(unique_t9.size()); - grid.rhoYe_axis.reserve(unique_rhoYe.size()); - grid.mue_axis.reserve(unique_mue.size()); - - grid.t9_axis.insert(grid.t9_axis.begin(), unique_t9.begin(), unique_t9.end()); - grid.rhoYe_axis.insert(grid.rhoYe_axis.begin(), unique_rhoYe.begin(), unique_rhoYe.end()); - grid.mue_axis.insert(grid.mue_axis.begin(), unique_mue.begin(), unique_mue.end()); - - std::ranges::sort(grid.t9_axis); - std::ranges::sort(grid.rhoYe_axis); - std::ranges::sort(grid.mue_axis); + grid.t9_axis.assign(unique_t9.begin(), unique_t9.end()); + grid.rhoYe_axis.assign(unique_rhoYe.begin(), unique_rhoYe.end()); const size_t nt9 = grid.t9_axis.size(); const size_t nrhoYe = grid.rhoYe_axis.size(); - const size_t nmue = grid.mue_axis.size(); - grid.data.resize(nt9 * nrhoYe * nmue); + grid.data.resize(nt9 * nrhoYe); - // Reverse map for quick index lookup - std::unordered_map t9_map, rhoYe_map, mue_map; + // Create reverse maps for efficient index lookups. + std::unordered_map t9_map, rhoYe_map; for (size_t i = 0; i < nt9; i++) { t9_map[grid.t9_axis[i]] = i; } for (size_t j = 0; j < nrhoYe; j++) { rhoYe_map[grid.rhoYe_axis[j]] = j; } - for (size_t k = 0; k < nmue; k++) { mue_map[grid.mue_axis[k]] = k; } + // Use a set to detect duplicate (T9, rhoYe) pairs, which would be a data error. + std::set> seen_coords; + + // Populate the 2D grid. for (const auto* row: rows) { + if (auto [it, inserted] = seen_coords.insert({row->t9, row->log_rhoye}); !inserted) { + auto A = static_cast(isotope_id >> 8); + auto Z = static_cast(isotope_id & 0xFF); + std::string msg = std::format( + "Duplicate data point for isotope (A={}, Z={}) at (T9={}, log10(rho*Ye)={}) in weak rate table. This indicates corrupted or malformed input data and should be taken as an unrecoverable error.", + A, Z, row->t9, row->log_rhoye + ); + LOG_ERROR(m_logger, "{}", msg); + throw std::runtime_error(msg); + } + size_t i_t9 = t9_map.at(row->t9); size_t j_rhoYe = rhoYe_map.at(row->log_rhoye); - size_t k_mue = mue_map.at(row->mu_e); - size_t index = (i_t9 * nrhoYe + j_rhoYe) * nmue + k_mue; + size_t index = i_t9 * nrhoYe + j_rhoYe; grid.data[index] = WeakRatePayload{ row->log_beta_plus, row->log_electron_capture, @@ -74,35 +81,41 @@ namespace gridfire::rates::weak { } } + + std::vector WeakRateInterpolator::available_isotopes() const { - std::vector isotopes; + using namespace fourdst::atomic; + std::vector isotopes; for (const auto &packed_id: m_rate_table | std::views::keys) { - const uint16_t A = static_cast(packed_id >> 8); - const uint8_t Z = static_cast(packed_id & 0xFF); - try { - fourdst::atomic::Species species = fourdst::atomic::az_to_species(A, Z); - isotopes.push_back(species); - } catch (const std::exception& e) { - throw std::runtime_error("Error converting A=" + std::to_string(A) + ", Z=" + std::to_string(Z) + " to Species: " + e.what()); + const auto A = static_cast(packed_id >> 8); + const auto Z = static_cast(packed_id & 0xFF); + std::expected result = az_to_species(A, Z); + if (!result.has_value()) { + std::string msg = "Could not convert A=" + std::to_string(A) + ", Z=" + std::to_string(Z) + " to Species: "; + msg += (result.error() == SpeciesErrorType::ELEMENT_SYMBOL_NOT_FOUND) ? "Unknown element (Z out of range)." : "Invalid isotope (A < Z or A out of range)."; + LOG_TRACE_L3(m_logger, "{}", msg); + } else { + isotopes.emplace_back(result.value()); } } return isotopes; } - std::expected WeakRateInterpolator::get_rates( + std::expected WeakRateInterpolator::get_rates( const uint16_t A, const uint8_t Z, const double t9, - const double log_rhoYe, - const double mu_e + const double log_rhoYe ) const { const auto it = m_rate_table.find(pack_isotope_id(A, Z)); if (it == m_rate_table.end()) { return std::unexpected(InterpolationError{InterpolationErrorType::UNKNOWN_SPECIES_ERROR}); } - const auto&[t9_axis, rhoYe_axis, mue_axis, data] = it->second; + const auto& grid = it->second; + const auto& t9_axis = grid.t9_axis; + const auto& rhoYe_axis = grid.rhoYe_axis; - // Now find the bracketing indices for t9, log_rhoYe, and mu_e + // Find bracketing indices for the 2D (t9, rhoYe) grid auto find_lower_index = [](const std::vector& axis, const double value) -> std::optional { const auto upperBoundIterator = std::ranges::upper_bound(axis, value); if (upperBoundIterator == axis.begin() || upperBoundIterator == axis.end()) { @@ -113,161 +126,79 @@ namespace gridfire::rates::weak { const auto i_t9_opt = find_lower_index(t9_axis, t9); const auto j_rhoYe_opt = find_lower_index(rhoYe_axis, log_rhoYe); - const auto k_mue_opt = find_lower_index(mue_axis, mu_e); - if (!i_t9_opt || !j_rhoYe_opt || !k_mue_opt) { + // Handle bounds errors for the 2D grid + if (!i_t9_opt || !j_rhoYe_opt) { std::unordered_map boundsInfo; - if (!i_t9_opt) { - boundsInfo[TableAxes::T9] = BoundsErrorInfo{ - TableAxes::T9, - t9_axis.front(), - t9_axis.back(), - t9 - }; + if (!i_t9_opt.has_value()) { + boundsInfo[TableAxes::T9] = BoundsErrorInfo{TableAxes::T9, t9_axis.front(), t9_axis.back(), t9}; } - if (!j_rhoYe_opt) { - boundsInfo[TableAxes::LOG_RHOYE] = BoundsErrorInfo{ - TableAxes::LOG_RHOYE, - rhoYe_axis.front(), - rhoYe_axis.back(), - log_rhoYe - }; + if (!j_rhoYe_opt.has_value()) { + boundsInfo[TableAxes::LOG_RHOYE] = BoundsErrorInfo{TableAxes::LOG_RHOYE, rhoYe_axis.front(), rhoYe_axis.back(), log_rhoYe}; } - if (!k_mue_opt) { - boundsInfo[TableAxes::MUE] = BoundsErrorInfo{ - TableAxes::MUE, - mue_axis.front(), - mue_axis.back(), - mu_e - }; - } - return std::unexpected( - InterpolationError{ - InterpolationErrorType::BOUNDS_ERROR, - boundsInfo - } - ); + return std::unexpected(InterpolationError{InterpolationErrorType::BOUNDS_ERROR, boundsInfo}); } const size_t i = i_t9_opt.value(); const size_t j = j_rhoYe_opt.value(); - const size_t k = k_mue_opt.value(); + const size_t nrhoYe = rhoYe_axis.size(); - // Coordinates of the bounding cube - const double t1 = t9_axis[i]; - const double t2 = t9_axis[i + 1]; - const double r1 = rhoYe_axis[j]; - const double r2 = rhoYe_axis[j + 1]; - const double m1 = mue_axis[k]; - const double m2 = mue_axis[k + 1]; + // Get the four corner payloads for the bilinear interpolation + const auto& p00 = grid.data[(i * nrhoYe) + j]; + const auto& p01 = grid.data[(i * nrhoYe) + j + 1]; + const auto& p10 = grid.data[((i + 1) * nrhoYe) + j]; + const auto& p11 = grid.data[((i + 1) * nrhoYe) + j + 1]; - const double td = (t9 - t1) / (t2 - t1); - const double rd = (log_rhoYe - r1) / (r2 - r1); - const double md = (mu_e - m1) / (m2 - m1); + // Fractional distances for the 2D bilinear interpolation + const double td = (t9 - t9_axis[i]) / (t9_axis[i + 1] - t9_axis[i]); + const double rd = (log_rhoYe - rhoYe_axis[j]) / (rhoYe_axis[j + 1] - rhoYe_axis[j]); - auto lerp = [](const double v0, const double v1, const double t) { - return v0 * (1 - t) + v1 * t; - }; - - auto interpolationField = [&](auto field_accessor) { - const size_t nrhoYe = rhoYe_axis.size(); - const size_t nmue = mue_axis.size(); - - auto get_val = [&](const size_t i_t, const size_t j_r, const size_t k_m) { - return field_accessor(data[(i_t * nrhoYe + j_r) * nmue + k_m]); + // Helper lambda to linearly interpolate between two full payloads + auto lerp_payload = [](const WeakRatePayload& p0, const WeakRatePayload& p1, double t) { + return WeakRatePayload{ + .log_beta_plus = std::lerp(p0.log_beta_plus, p1.log_beta_plus, t), + .log_electron_capture = std::lerp(p0.log_electron_capture, p1.log_electron_capture, t), + .log_neutrino_loss_ec = std::lerp(p0.log_neutrino_loss_ec, p1.log_neutrino_loss_ec, t), + .log_beta_minus = std::lerp(p0.log_beta_minus, p1.log_beta_minus, t), + .log_positron_capture = std::lerp(p0.log_positron_capture, p1.log_positron_capture, t), + .log_antineutrino_loss_bd = std::lerp(p0.log_antineutrino_loss_bd, p1.log_antineutrino_loss_bd, t), }; - - const double c000 = get_val(i, j, k); - const double c001 = get_val(i, j, k + 1); - const double c010 = get_val(i, j + 1, k); - const double c011 = get_val(i, j + 1, k + 1); - const double c100 = get_val(i + 1, j, k); - const double c101 = get_val(i + 1, j, k + 1); - const double c110 = get_val(i + 1, j + 1, k); - const double c111 = get_val(i + 1, j + 1, k + 1); - - const double c00 = lerp(c000, c001, md); - const double c01 = lerp(c010, c011, md); - const double c10 = lerp(c100, c101, md); - const double c11 = lerp(c110, c111, md); - - const double c0 = lerp(c00, c01, rd); - const double c1 = lerp(c10, c11, rd); - - return lerp(c0, c1, td); - }; - WeakRatePayload result; + // Perform the bilinear interpolation + const WeakRatePayload p0 = lerp_payload(p00, p01, rd); + const WeakRatePayload p1 = lerp_payload(p10, p11, rd); - result.log_beta_plus = interpolationField([](const WeakRatePayload& p) { return p.log_beta_plus; }); - result.log_electron_capture = interpolationField([](const WeakRatePayload& p) { return p.log_electron_capture; }); - result.log_neutrino_loss_ec = interpolationField([](const WeakRatePayload& p) { return p.log_neutrino_loss_ec; }); - result.log_beta_minus = interpolationField([](const WeakRatePayload& p) { return p.log_beta_minus; }); - result.log_positron_capture = interpolationField([](const WeakRatePayload& p) { return p.log_positron_capture; }); - result.log_antineutrino_loss_bd = interpolationField([](const WeakRatePayload& p) { return p.log_antineutrino_loss_bd; }); - return result; + return lerp_payload(p0, p1, td); } std::expected WeakRateInterpolator::get_rate_derivatives( uint16_t A, uint8_t Z, double t9, - double log_rhoYe, - double mu_e + double log_rhoYe ) const { - WeakRateDerivatives result; + WeakRateDerivatives result{}; + //TODO: Make this perturbation scale aware constexpr double eps = 1e-6; // Small perturbation for finite difference // Perturbations for finite difference const double h_t9 = (t9 > 1e-9) ? t9 * eps : eps; - const auto payload_plus_t9 = get_rates(A, Z, t9 + h_t9, log_rhoYe, mu_e); - const auto payload_minus_t9 = get_rates(A, Z, t9 - h_t9, log_rhoYe, mu_e); + const auto payload_plus_t9 = get_rates(A, Z, t9 + h_t9, log_rhoYe); + const auto payload_minus_t9 = get_rates(A, Z, t9 - h_t9, log_rhoYe); const double h_rhoYe = (std::abs(log_rhoYe) > 1e-9) ? std::abs(log_rhoYe) * eps : eps; - const auto payload_plus_rhoYe = get_rates(A, Z, t9, log_rhoYe + h_rhoYe, mu_e); - const auto payload_minus_rhoYe = get_rates(A, Z, t9, log_rhoYe - h_rhoYe, mu_e); + const auto payload_plus_rhoYe = get_rates(A, Z, t9, log_rhoYe + h_rhoYe); + const auto payload_minus_rhoYe = get_rates(A, Z, t9, log_rhoYe - h_rhoYe); - const double h_mue = (std::abs(mu_e) > 1e-9) ? std::abs(mu_e) * eps : eps; - const auto payload_plus_mue = get_rates(A, Z, t9, log_rhoYe, mu_e + h_mue); - const auto payload_minus_mue = get_rates(A, Z, t9, log_rhoYe, mu_e - h_mue); - if (!payload_plus_t9 || !payload_minus_t9 || !payload_plus_rhoYe || !payload_minus_rhoYe || !payload_plus_mue || !payload_minus_mue) { - const auto it = m_rate_table.find(pack_isotope_id(A, Z)); - if (it == m_rate_table.end()) { - return std::unexpected(InterpolationError{InterpolationErrorType::UNKNOWN_SPECIES_ERROR}); - } - - const IsotopeGrid& grid = it->second; - InterpolationError error; - std::unordered_map boundsInfo; - if (!payload_minus_t9 || !payload_plus_t9) { - boundsInfo[TableAxes::T9] = BoundsErrorInfo{ - TableAxes::T9, - grid.t9_axis.front(), - grid.t9_axis.back(), - t9 - }; - } - if (!payload_minus_rhoYe || !payload_plus_rhoYe) { - boundsInfo[TableAxes::LOG_RHOYE] = BoundsErrorInfo{ - TableAxes::LOG_RHOYE, - grid.rhoYe_axis.front(), - grid.rhoYe_axis.back(), - log_rhoYe - }; - } - if (!payload_minus_mue || !payload_plus_mue) { - boundsInfo[TableAxes::MUE] = BoundsErrorInfo{ - TableAxes::MUE, - grid.mue_axis.front(), - grid.mue_axis.back(), - mu_e - }; - } - error.type = InterpolationErrorType::BOUNDS_ERROR; - error.boundsErrorInfo = boundsInfo; - return std::unexpected(error); + if (!payload_plus_t9 || !payload_minus_t9 || !payload_plus_rhoYe || !payload_minus_rhoYe) { + // Determine which perturbation failed and return a consolidated error + auto first_error = !payload_plus_t9 ? payload_plus_t9.error() : + !payload_minus_t9 ? payload_minus_t9.error() : + !payload_plus_rhoYe ? payload_plus_rhoYe.error() : + payload_minus_rhoYe.error(); + return std::unexpected(first_error); } // Derivatives wrt. T9 @@ -288,15 +219,6 @@ namespace gridfire::rates::weak { result.d_log_positron_capture[1] = (payload_plus_rhoYe->log_positron_capture - payload_minus_rhoYe->log_positron_capture) / rhoYe_denominator; result.d_log_antineutrino_loss_bd[1] = (payload_plus_rhoYe->log_antineutrino_loss_bd - payload_minus_rhoYe->log_antineutrino_loss_bd) / rhoYe_denominator; - // Derivatives wrt. MuE - const double mue_denominator = 2 * h_mue; - result.d_log_beta_plus[2] = (payload_plus_mue->log_beta_plus - payload_minus_mue->log_beta_plus) / mue_denominator; - result.d_log_beta_minus[2] = (payload_plus_mue->log_beta_minus - payload_minus_mue->log_beta_minus) / mue_denominator; - result.d_log_electron_capture[2] = (payload_plus_mue->log_electron_capture - payload_minus_mue->log_electron_capture) / mue_denominator; - result.d_log_neutrino_loss_ec[2] = (payload_plus_mue->log_neutrino_loss_ec - payload_minus_mue->log_neutrino_loss_ec) / mue_denominator; - result.d_log_positron_capture[2] = (payload_plus_mue->log_positron_capture - payload_minus_mue->log_positron_capture) / mue_denominator; - result.d_log_antineutrino_loss_bd[2] = (payload_plus_mue->log_antineutrino_loss_bd - payload_minus_mue->log_antineutrino_loss_bd) / mue_denominator; - return result; } diff --git a/src/lib/solver/strategies/CVODE_solver_strategy.cpp b/src/lib/solver/strategies/CVODE_solver_strategy.cpp index 6b3df074..efeddfc6 100644 --- a/src/lib/solver/strategies/CVODE_solver_strategy.cpp +++ b/src/lib/solver/strategies/CVODE_solver_strategy.cpp @@ -393,8 +393,8 @@ namespace gridfire::solver { void CVODESolverStrategy::calculate_rhs( const sunrealtype t, - const N_Vector y, - const N_Vector ydot, + N_Vector y, + N_Vector ydot, const CVODEUserData *data ) const { const size_t numSpecies = m_engine.getNetworkSpecies().size(); diff --git a/subprojects/fourdst.wrap b/subprojects/fourdst.wrap index d23a0c54..d918759f 100644 --- a/subprojects/fourdst.wrap +++ b/subprojects/fourdst.wrap @@ -1,4 +1,4 @@ [wrap-git] url = https://github.com/4D-STAR/fourdst -revision = v0.8.1 +revision = v0.8.2 depth = 1 diff --git a/tests/graphnet_sandbox/WeakReactionsGraph.svg b/tests/graphnet_sandbox/WeakReactionsGraph.svg new file mode 100644 index 00000000..b70e338d --- /dev/null +++ b/tests/graphnet_sandbox/WeakReactionsGraph.svg @@ -0,0 +1,17411 @@ + + + + + + +NuclearReactionNetwork + + + +Al-21 + +Al-21 + + + +Al-22 + +Al-22 + + + +Al-23 + +Al-23 + + + +Al-24 + +Al-24 + + + +reaction_al24(a,p)si27 + + + + +Al-24->reaction_al24(a,p)si27 + + + + + +reaction_al24(a,g)p28 + + + + +Al-24->reaction_al24(a,g)p28 + + + + + +reaction_al24(n,g)al25 + + + + +Al-24->reaction_al24(n,g)al25 + + + + + +reaction_al24(,e+ a)ne20 + + + + +Al-24->reaction_al24(,e+ a)ne20 + + + + + +reaction_al24(p,g)si25 + + + + +Al-24->reaction_al24(p,g)si25 + + + + + +reaction_al24(,e+ p)na23 + + + + +Al-24->reaction_al24(,e+ p)na23 + + + + + +reaction_al24(,e+)mg24 + + + + +Al-24->reaction_al24(,e+)mg24 + + + + + +reaction_Al-24(,ν)e+,Mg-24 + + + + +Al-24->reaction_Al-24(,ν)e+,Mg-24 + + + + + +reaction_Al-24(e-,ν)Mg-24 + + + + +Al-24->reaction_Al-24(e-,ν)Mg-24 + + + + + +reaction_Al-24(,ν|)e-,Si-24 + + + + +Al-24->reaction_Al-24(,ν|)e-,Si-24 + + + + + +reaction_Al-24(e+,ν|)Si-24 + + + + +Al-24->reaction_Al-24(e+,ν|)Si-24 + + + + + +Al-25 + +Al-25 + + + +reaction_al25(a,p)si28 + + + + +Al-25->reaction_al25(a,p)si28 + + + + + +reaction_al25(,e+)mg25 + + + + +Al-25->reaction_al25(,e+)mg25 + + + + + +reaction_al25(a,g)p29 + + + + +Al-25->reaction_al25(a,g)p29 + + + + + +reaction_al25(n,g)al26 + + + + +Al-25->reaction_al25(n,g)al26 + + + + + +reaction_al25(p,g)si26 + + + + +Al-25->reaction_al25(p,g)si26 + + + + + +reaction_Al-25(,ν)e+,Mg-25 + + + + +Al-25->reaction_Al-25(,ν)e+,Mg-25 + + + + + +reaction_Al-25(e-,ν)Mg-25 + + + + +Al-25->reaction_Al-25(e-,ν)Mg-25 + + + + + +reaction_Al-25(,ν|)e-,Si-25 + + + + +Al-25->reaction_Al-25(,ν|)e-,Si-25 + + + + + +reaction_Al-25(e+,ν|)Si-25 + + + + +Al-25->reaction_Al-25(e+,ν|)Si-25 + + + + + +Al-26 + +Al-26 + + + +reaction_al26(a,g)p30 + + + + +Al-26->reaction_al26(a,g)p30 + + + + + +reaction_al26(n,g)al27 + + + + +Al-26->reaction_al26(n,g)al27 + + + + + +reaction_al26(a,p)si29 + + + + +Al-26->reaction_al26(a,p)si29 + + + + + +reaction_al26(,e+)mg26 + + + + +Al-26->reaction_al26(,e+)mg26 + + + + + +reaction_al26(p,g)si27 + + + + +Al-26->reaction_al26(p,g)si27 + + + + + +reaction_Al-26(,ν)e+,Mg-26 + + + + +Al-26->reaction_Al-26(,ν)e+,Mg-26 + + + + + +reaction_Al-26(e-,ν)Mg-26 + + + + +Al-26->reaction_Al-26(e-,ν)Mg-26 + + + + + +reaction_Al-26(,ν|)e-,Si-26 + + + + +Al-26->reaction_Al-26(,ν|)e-,Si-26 + + + + + +reaction_Al-26(e+,ν|)Si-26 + + + + +Al-26->reaction_Al-26(e+,ν|)Si-26 + + + + + +Al-27 + +Al-27 + + + +reaction_al27(a,p)si30 + + + + +Al-27->reaction_al27(a,p)si30 + + + + + +reaction_al27(a,n)p30 + + + + +Al-27->reaction_al27(a,n)p30 + + + + + +reaction_al27(a,g)p31 + + + + +Al-27->reaction_al27(a,g)p31 + + + + + +reaction_al27(n,g)al28 + + + + +Al-27->reaction_al27(n,g)al28 + + + + + +reaction_al27(p,g)si28 + + + + +Al-27->reaction_al27(p,g)si28 + + + + + +reaction_Al-27(,ν)e+,Mg-27 + + + + +Al-27->reaction_Al-27(,ν)e+,Mg-27 + + + + + +reaction_Al-27(e-,ν)Mg-27 + + + + +Al-27->reaction_Al-27(e-,ν)Mg-27 + + + + + +reaction_Al-27(,ν|)e-,Si-27 + + + + +Al-27->reaction_Al-27(,ν|)e-,Si-27 + + + + + +reaction_Al-27(e+,ν|)Si-27 + + + + +Al-27->reaction_Al-27(e+,ν|)Si-27 + + + + + +Al-28 + +Al-28 + + + +reaction_al28(p,n)si28 + + + + +Al-28->reaction_al28(p,n)si28 + + + + + +reaction_al28(a,n)p31 + + + + +Al-28->reaction_al28(a,n)p31 + + + + + +reaction_al28(a,g)p32 + + + + +Al-28->reaction_al28(a,g)p32 + + + + + +reaction_al28(a,p)si31 + + + + +Al-28->reaction_al28(a,p)si31 + + + + + +reaction_al28(p,g)si29 + + + + +Al-28->reaction_al28(p,g)si29 + + + + + +reaction_al28(n,g)al29 + + + + +Al-28->reaction_al28(n,g)al29 + + + + + +reaction_al28(e-,)si28 + + + + +Al-28->reaction_al28(e-,)si28 + + + + + +reaction_Al-28(,ν)e+,Mg-28 + + + + +Al-28->reaction_Al-28(,ν)e+,Mg-28 + + + + + +reaction_Al-28(e-,ν)Mg-28 + + + + +Al-28->reaction_Al-28(e-,ν)Mg-28 + + + + + +reaction_Al-28(,ν|)e-,Si-28 + + + + +Al-28->reaction_Al-28(,ν|)e-,Si-28 + + + + + +reaction_Al-28(e+,ν|)Si-28 + + + + +Al-28->reaction_Al-28(e+,ν|)Si-28 + + + + + +Al-29 + +Al-29 + + + +Al-30 + +Al-30 + + + +Al-31 + +Al-31 + + + +Ar-31 + +Ar-31 + + + +Ar-32 + +Ar-32 + + + +Ar-33 + +Ar-33 + + + +Ar-34 + +Ar-34 + + + +Ar-35 + +Ar-35 + + + +reaction_ar35(a,p)k38 + + + + +Ar-35->reaction_ar35(a,p)k38 + + + + + +reaction_ar35(a,g)ca39 + + + + +Ar-35->reaction_ar35(a,g)ca39 + + + + + +reaction_ar35(p,g)k36 + + + + +Ar-35->reaction_ar35(p,g)k36 + + + + + +reaction_ar35(n,g)ar36 + + + + +Ar-35->reaction_ar35(n,g)ar36 + + + + + +reaction_ar35(,e+)cl35 + + + + +Ar-35->reaction_ar35(,e+)cl35 + + + + + +reaction_Ar-35(,ν)e+,Cl-35 + + + + +Ar-35->reaction_Ar-35(,ν)e+,Cl-35 + + + + + +reaction_Ar-35(e-,ν)Cl-35 + + + + +Ar-35->reaction_Ar-35(e-,ν)Cl-35 + + + + + +reaction_Ar-35(,ν|)e-,K-35 + + + + +Ar-35->reaction_Ar-35(,ν|)e-,K-35 + + + + + +reaction_Ar-35(e+,ν|)K-35 + + + + +Ar-35->reaction_Ar-35(e+,ν|)K-35 + + + + + +Ar-36 + +Ar-36 + + + +Ar-37 + +Ar-37 + + + +Ar-38 + +Ar-38 + + + +B-10 + +B-10 + + + +B-11 + +B-11 + + + +B-12 + +B-12 + + + +reaction_b12(a,n)n15 + + + + +B-12->reaction_b12(a,n)n15 + + + + + +reaction_b12(n,g)b13 + + + + +B-12->reaction_b12(n,g)b13 + + + + + +reaction_b12(,e- 2a)he4 + + + + +B-12->reaction_b12(,e- 2a)he4 + + + + + +reaction_b12(p,n)c12 + + + + +B-12->reaction_b12(p,n)c12 + + + + + +reaction_b12(e-,)c12 + + + + +B-12->reaction_b12(e-,)c12 + + + + + +reaction_B-12(,ν)e+,Be-12 + + + + +B-12->reaction_B-12(,ν)e+,Be-12 + + + + + +reaction_B-12(e-,ν)Be-12 + + + + +B-12->reaction_B-12(e-,ν)Be-12 + + + + + +reaction_B-12(,ν|)e-,C-12 + + + + +B-12->reaction_B-12(,ν|)e-,C-12 + + + + + +reaction_B-12(e+,ν|)C-12 + + + + +B-12->reaction_B-12(e+,ν|)C-12 + + + + + +B-13 + +B-13 + + + +reaction_b13(a,n)n16 + + + + +B-13->reaction_b13(a,n)n16 + + + + + +reaction_b13(a,g)n17 + + + + +B-13->reaction_b13(a,g)n17 + + + + + +reaction_b13(n,g)b14 + + + + +B-13->reaction_b13(n,g)b14 + + + + + +reaction_b13(e-,)c13 + + + + +B-13->reaction_b13(e-,)c13 + + + + + +B-14 + +B-14 + + + +reaction_b14(e-,)c14 + + + + +B-14->reaction_b14(e-,)c14 + + + + + +reaction_b14(,e- n)c13 + + + + +B-14->reaction_b14(,e- n)c13 + + + + + +reaction_B-14(,ν)e+,Be-14 + + + + +B-14->reaction_B-14(,ν)e+,Be-14 + + + + + +reaction_B-14(e-,ν)Be-14 + + + + +B-14->reaction_B-14(e-,ν)Be-14 + + + + + +reaction_B-14(,ν|)e-,C-14 + + + + +B-14->reaction_B-14(,ν|)e-,C-14 + + + + + +reaction_B-14(e+,ν|)C-14 + + + + +B-14->reaction_B-14(e+,ν|)C-14 + + + + + +B-15 + +B-15 + + + +B-7 + +B-7 + + + +reaction_B-7(,ν)e+,Be-7 + + + + +B-7->reaction_B-7(,ν)e+,Be-7 + + + + + +reaction_B-7(e-,ν)Be-7 + + + + +B-7->reaction_B-7(e-,ν)Be-7 + + + + + +B-8 + +B-8 + + + +reaction_b8(a,p)c11 + + + + +B-8->reaction_b8(a,p)c11 + + + + + +reaction_b8(p,g)c9 + + + + +B-8->reaction_b8(p,g)c9 + + + + + +reaction_b8(,e+ a)he4 + + + + +B-8->reaction_b8(,e+ a)he4 + + + + + +reaction_b8(n,p a)he4 + + + + +B-8->reaction_b8(n,p a)he4 + + + + + +reaction_B-8(,ν)e+,Be-8 + + + + +B-8->reaction_B-8(,ν)e+,Be-8 + + + + + +reaction_B-8(e-,ν)Be-8 + + + + +B-8->reaction_B-8(e-,ν)Be-8 + + + + + +reaction_B-8(,ν|)e-,C-8 + + + + +B-8->reaction_B-8(,ν|)e-,C-8 + + + + + +reaction_B-8(e+,ν|)C-8 + + + + +B-8->reaction_B-8(e+,ν|)C-8 + + + + + +Be-12 + +Be-12 + + + +reaction_be12(,e- n)b11 + + + + +Be-12->reaction_be12(,e- n)b11 + + + + + +reaction_be12(e-,)b12 + + + + +Be-12->reaction_be12(e-,)b12 + + + + + +Be-14 + +Be-14 + + + +Be-6 + +Be-6 + + + +Be-7 + +Be-7 + + + +reaction_be7(he3,2p a)he4 + + + + +Be-7->reaction_be7(he3,2p a)he4 + + + + + +reaction_be7(t,p n a)he4 + + + + +Be-7->reaction_be7(t,p n a)he4 + + + + + +reaction_be7(,e+)li7 + + + + +Be-7->reaction_be7(,e+)li7 + + + + + +reaction_be7(p,g)b8 + + + + +Be-7->reaction_be7(p,g)b8 + + + + + +reaction_be7(a,g)c11 + + + + +Be-7->reaction_be7(a,g)c11 + + + + + +reaction_be7(d,p a)he4 + + + + +Be-7->reaction_be7(d,p a)he4 + + + + + +reaction_Be-7(,ν)e+,Li-7 + + + + +Be-7->reaction_Be-7(,ν)e+,Li-7 + + + + + +reaction_Be-7(e-,ν)Li-7 + + + + +Be-7->reaction_Be-7(e-,ν)Li-7 + + + + + +reaction_Be-7(,ν|)e-,B-7 + + + + +Be-7->reaction_Be-7(,ν|)e-,B-7 + + + + + +reaction_Be-7(e+,ν|)B-7 + + + + +Be-7->reaction_Be-7(e+,ν|)B-7 + + + + + +Be-8 + +Be-8 + + + +Be-9 + +Be-9 + + + +C-11 + +C-11 + + + +reaction_c11(n,2a)he4 + + + + +C-11->reaction_c11(n,2a)he4 + + + + + +reaction_c11(a,p)n14 + + + + +C-11->reaction_c11(a,p)n14 + + + + + +reaction_c11(p,g)n12 + + + + +C-11->reaction_c11(p,g)n12 + + + + + +reaction_c11(n,g)c12 + + + + +C-11->reaction_c11(n,g)c12 + + + + + +reaction_c11(,e+)b11 + + + + +C-11->reaction_c11(,e+)b11 + + + + + +reaction_C-11(,ν)e+,B-11 + + + + +C-11->reaction_C-11(,ν)e+,B-11 + + + + + +reaction_C-11(e-,ν)B-11 + + + + +C-11->reaction_C-11(e-,ν)B-11 + + + + + +reaction_C-11(,ν|)e-,N-11 + + + + +C-11->reaction_C-11(,ν|)e-,N-11 + + + + + +reaction_C-11(e+,ν|)N-11 + + + + +C-11->reaction_C-11(e+,ν|)N-11 + + + + + +C-12 + +C-12 + + + +reaction_ne20(c12,a)si28 + + + + +C-12->reaction_ne20(c12,a)si28 + + + + + +reaction_ne20(c12,p)p31 + + + + +C-12->reaction_ne20(c12,p)p31 + + + + + +reaction_o16(c12,a)mg24 + + + + +C-12->reaction_o16(c12,a)mg24 + + + + + +reaction_o16(c12,p)al27 + + + + +C-12->reaction_o16(c12,p)al27 + + + + + +reaction_c12(c12,a)ne20 + + + + +C-12->reaction_c12(c12,a)ne20 + + + + + +C-12->reaction_c12(c12,a)ne20 + + + + + +reaction_ne20(c12,n)s31 + + + + +C-12->reaction_ne20(c12,n)s31 + + + + + +reaction_c12(a,g)o16 + + + + +C-12->reaction_c12(a,g)o16 + + + + + +reaction_c12(p,g)n13 + + + + +C-12->reaction_c12(p,g)n13 + + + + + +reaction_c12(n,g)c13 + + + + +C-12->reaction_c12(n,g)c13 + + + + + +reaction_c12(c12,p)na23 + + + + +C-12->reaction_c12(c12,p)na23 + + + + + +C-12->reaction_c12(c12,p)na23 + + + + + +reaction_C-12(,ν)e+,B-12 + + + + +C-12->reaction_C-12(,ν)e+,B-12 + + + + + +reaction_C-12(e-,ν)B-12 + + + + +C-12->reaction_C-12(e-,ν)B-12 + + + + + +reaction_C-12(,ν|)e-,N-12 + + + + +C-12->reaction_C-12(,ν|)e-,N-12 + + + + + +reaction_C-12(e+,ν|)N-12 + + + + +C-12->reaction_C-12(e+,ν|)N-12 + + + + + +C-13 + +C-13 + + + +reaction_c13(a,n)o16 + + + + +C-13->reaction_c13(a,n)o16 + + + + + +reaction_c13(d,n)n14 + + + + +C-13->reaction_c13(d,n)n14 + + + + + +reaction_c13(p,g)n14 + + + + +C-13->reaction_c13(p,g)n14 + + + + + +reaction_c13(n,g)c14 + + + + +C-13->reaction_c13(n,g)c14 + + + + + +reaction_c13(p,n)n13 + + + + +C-13->reaction_c13(p,n)n13 + + + + + +reaction_C-13(,ν)e+,B-13 + + + + +C-13->reaction_C-13(,ν)e+,B-13 + + + + + +reaction_C-13(e-,ν)B-13 + + + + +C-13->reaction_C-13(e-,ν)B-13 + + + + + +reaction_C-13(,ν|)e-,N-13 + + + + +C-13->reaction_C-13(,ν|)e-,N-13 + + + + + +reaction_C-13(e+,ν|)N-13 + + + + +C-13->reaction_C-13(e+,ν|)N-13 + + + + + +C-14 + +C-14 + + + +reaction_c14(d,n)n15 + + + + +C-14->reaction_c14(d,n)n15 + + + + + +reaction_c14(e-,)n14 + + + + +C-14->reaction_c14(e-,)n14 + + + + + +reaction_c14(a,g)o18 + + + + +C-14->reaction_c14(a,g)o18 + + + + + +reaction_c14(p,g)n15 + + + + +C-14->reaction_c14(p,g)n15 + + + + + +reaction_c14(n,g)c15 + + + + +C-14->reaction_c14(n,g)c15 + + + + + +reaction_C-14(,ν)e+,B-14 + + + + +C-14->reaction_C-14(,ν)e+,B-14 + + + + + +reaction_C-14(e-,ν)B-14 + + + + +C-14->reaction_C-14(e-,ν)B-14 + + + + + +reaction_C-14(,ν|)e-,N-14 + + + + +C-14->reaction_C-14(,ν|)e-,N-14 + + + + + +reaction_C-14(e+,ν|)N-14 + + + + +C-14->reaction_C-14(e+,ν|)N-14 + + + + + +C-15 + +C-15 + + + +reaction_c15(a,n)o18 + + + + +C-15->reaction_c15(a,n)o18 + + + + + +reaction_c15(e-,)n15 + + + + +C-15->reaction_c15(e-,)n15 + + + + + +reaction_c15(n,g)c16 + + + + +C-15->reaction_c15(n,g)c16 + + + + + +reaction_c15(p,n)n15 + + + + +C-15->reaction_c15(p,n)n15 + + + + + +reaction_C-15(,ν)e+,B-15 + + + + +C-15->reaction_C-15(,ν)e+,B-15 + + + + + +reaction_C-15(e-,ν)B-15 + + + + +C-15->reaction_C-15(e-,ν)B-15 + + + + + +reaction_C-15(,ν|)e-,N-15 + + + + +C-15->reaction_C-15(,ν|)e-,N-15 + + + + + +reaction_C-15(e+,ν|)N-15 + + + + +C-15->reaction_C-15(e+,ν|)N-15 + + + + + +C-16 + +C-16 + + + +reaction_c16(e-,)n16 + + + + +C-16->reaction_c16(e-,)n16 + + + + + +reaction_c16(,e- n)n15 + + + + +C-16->reaction_c16(,e- n)n15 + + + + + +reaction_c16(n,g)c17 + + + + +C-16->reaction_c16(n,g)c17 + + + + + +C-17 + +C-17 + + + +C-8 + +C-8 + + + +C-9 + +C-9 + + + +Ca-39 + +Ca-39 + + + +Cl-31 + +Cl-31 + + + +reaction_cl31(a,p)ar34 + + + + +Cl-31->reaction_cl31(a,p)ar34 + + + + + +reaction_cl31(a,g)k35 + + + + +Cl-31->reaction_cl31(a,g)k35 + + + + + +reaction_cl31(n,g)cl32 + + + + +Cl-31->reaction_cl31(n,g)cl32 + + + + + +reaction_cl31(p,g)ar32 + + + + +Cl-31->reaction_cl31(p,g)ar32 + + + + + +reaction_cl31(,e+ p)p30 + + + + +Cl-31->reaction_cl31(,e+ p)p30 + + + + + +reaction_cl31(,e+)s31 + + + + +Cl-31->reaction_cl31(,e+)s31 + + + + + +reaction_Cl-31(,ν)e+,S-31 + + + + +Cl-31->reaction_Cl-31(,ν)e+,S-31 + + + + + +reaction_Cl-31(e-,ν)S-31 + + + + +Cl-31->reaction_Cl-31(e-,ν)S-31 + + + + + +reaction_Cl-31(,ν|)e-,Ar-31 + + + + +Cl-31->reaction_Cl-31(,ν|)e-,Ar-31 + + + + + +reaction_Cl-31(e+,ν|)Ar-31 + + + + +Cl-31->reaction_Cl-31(e+,ν|)Ar-31 + + + + + +Cl-32 + +Cl-32 + + + +reaction_cl32(n,g)cl33 + + + + +Cl-32->reaction_cl32(n,g)cl33 + + + + + +reaction_cl32(a,g)k36 + + + + +Cl-32->reaction_cl32(a,g)k36 + + + + + +reaction_cl32(a,p)ar35 + + + + +Cl-32->reaction_cl32(a,p)ar35 + + + + + +reaction_cl32(p,g)ar33 + + + + +Cl-32->reaction_cl32(p,g)ar33 + + + + + +reaction_cl32(,e+)s32 + + + + +Cl-32->reaction_cl32(,e+)s32 + + + + + +reaction_cl32(,e+ p)p31 + + + + +Cl-32->reaction_cl32(,e+ p)p31 + + + + + +reaction_cl32(,e+ a)si28 + + + + +Cl-32->reaction_cl32(,e+ a)si28 + + + + + +reaction_Cl-32(,ν)e+,S-32 + + + + +Cl-32->reaction_Cl-32(,ν)e+,S-32 + + + + + +reaction_Cl-32(e-,ν)S-32 + + + + +Cl-32->reaction_Cl-32(e-,ν)S-32 + + + + + +reaction_Cl-32(,ν|)e-,Ar-32 + + + + +Cl-32->reaction_Cl-32(,ν|)e-,Ar-32 + + + + + +reaction_Cl-32(e+,ν|)Ar-32 + + + + +Cl-32->reaction_Cl-32(e+,ν|)Ar-32 + + + + + +Cl-33 + +Cl-33 + + + +Cl-34 + +Cl-34 + + + +reaction_cl34(a,p)ar37 + + + + +Cl-34->reaction_cl34(a,p)ar37 + + + + + +reaction_cl34(p,g)ar35 + + + + +Cl-34->reaction_cl34(p,g)ar35 + + + + + +reaction_cl34(a,g)k38 + + + + +Cl-34->reaction_cl34(a,g)k38 + + + + + +reaction_cl34(n,g)cl35 + + + + +Cl-34->reaction_cl34(n,g)cl35 + + + + + +reaction_cl34(,e+)s34 + + + + +Cl-34->reaction_cl34(,e+)s34 + + + + + +reaction_Cl-34(,ν)e+,S-34 + + + + +Cl-34->reaction_Cl-34(,ν)e+,S-34 + + + + + +reaction_Cl-34(e-,ν)S-34 + + + + +Cl-34->reaction_Cl-34(e-,ν)S-34 + + + + + +reaction_Cl-34(,ν|)e-,Ar-34 + + + + +Cl-34->reaction_Cl-34(,ν|)e-,Ar-34 + + + + + +reaction_Cl-34(e+,ν|)Ar-34 + + + + +Cl-34->reaction_Cl-34(e+,ν|)Ar-34 + + + + + +Cl-35 + +Cl-35 + + + +reaction_cl35(a,p)ar38 + + + + +Cl-35->reaction_cl35(a,p)ar38 + + + + + +reaction_cl35(n,g)cl36 + + + + +Cl-35->reaction_cl35(n,g)cl36 + + + + + +reaction_cl35(p,g)ar36 + + + + +Cl-35->reaction_cl35(p,g)ar36 + + + + + +reaction_cl35(a,g)k39 + + + + +Cl-35->reaction_cl35(a,g)k39 + + + + + +reaction_Cl-35(,ν)e+,S-35 + + + + +Cl-35->reaction_Cl-35(,ν)e+,S-35 + + + + + +reaction_Cl-35(e-,ν)S-35 + + + + +Cl-35->reaction_Cl-35(e-,ν)S-35 + + + + + +reaction_Cl-35(,ν|)e-,Ar-35 + + + + +Cl-35->reaction_Cl-35(,ν|)e-,Ar-35 + + + + + +reaction_Cl-35(e+,ν|)Ar-35 + + + + +Cl-35->reaction_Cl-35(e+,ν|)Ar-35 + + + + + +Cl-36 + +Cl-36 + + + +Cl-37 + +Cl-37 + + + +F-13 + +F-13 + + + +F-14 + +F-14 + + + +reaction_f14(n,g)f15 + + + + +F-14->reaction_f14(n,g)f15 + + + + + +F-15 + +F-15 + + + +reaction_f15(a,p)ne18 + + + + +F-15->reaction_f15(a,p)ne18 + + + + + +reaction_f15(n,g)f16 + + + + +F-15->reaction_f15(n,g)f16 + + + + + +reaction_f15(a,g)na19 + + + + +F-15->reaction_f15(a,g)na19 + + + + + +reaction_F-15(,ν)e+,O-15 + + + + +F-15->reaction_F-15(,ν)e+,O-15 + + + + + +reaction_F-15(e-,ν)O-15 + + + + +F-15->reaction_F-15(e-,ν)O-15 + + + + + +reaction_F-15(,ν|)e-,Ne-15 + + + + +F-15->reaction_F-15(,ν|)e-,Ne-15 + + + + + +reaction_F-15(e+,ν|)Ne-15 + + + + +F-15->reaction_F-15(e+,ν|)Ne-15 + + + + + +F-16 + +F-16 + + + +reaction_f16(a,p)ne19 + + + + +F-16->reaction_f16(a,p)ne19 + + + + + +reaction_f16(a,g)na20 + + + + +F-16->reaction_f16(a,g)na20 + + + + + +reaction_f16(n,g)f17 + + + + +F-16->reaction_f16(n,g)f17 + + + + + +reaction_F-16(,ν)e+,O-16 + + + + +F-16->reaction_F-16(,ν)e+,O-16 + + + + + +reaction_F-16(e-,ν)O-16 + + + + +F-16->reaction_F-16(e-,ν)O-16 + + + + + +reaction_F-16(,ν|)e-,Ne-16 + + + + +F-16->reaction_F-16(,ν|)e-,Ne-16 + + + + + +reaction_F-16(e+,ν|)Ne-16 + + + + +F-16->reaction_F-16(e+,ν|)Ne-16 + + + + + +F-17 + +F-17 + + + +reaction_f17(a,g)na21 + + + + +F-17->reaction_f17(a,g)na21 + + + + + +reaction_f17(n,g)f18 + + + + +F-17->reaction_f17(n,g)f18 + + + + + +reaction_f17(p,g)ne18 + + + + +F-17->reaction_f17(p,g)ne18 + + + + + +reaction_f17(,e+)o17 + + + + +F-17->reaction_f17(,e+)o17 + + + + + +reaction_F-17(,ν)e+,O-17 + + + + +F-17->reaction_F-17(,ν)e+,O-17 + + + + + +reaction_F-17(e-,ν)O-17 + + + + +F-17->reaction_F-17(e-,ν)O-17 + + + + + +reaction_F-17(,ν|)e-,Ne-17 + + + + +F-17->reaction_F-17(,ν|)e-,Ne-17 + + + + + +reaction_F-17(e+,ν|)Ne-17 + + + + +F-17->reaction_F-17(e+,ν|)Ne-17 + + + + + +F-18 + +F-18 + + + +reaction_f18(a,p)ne21 + + + + +F-18->reaction_f18(a,p)ne21 + + + + + +reaction_f18(n,g)f19 + + + + +F-18->reaction_f18(n,g)f19 + + + + + +reaction_f18(p,g)ne19 + + + + +F-18->reaction_f18(p,g)ne19 + + + + + +reaction_f18(a,g)na22 + + + + +F-18->reaction_f18(a,g)na22 + + + + + +reaction_f18(,e+)o18 + + + + +F-18->reaction_f18(,e+)o18 + + + + + +reaction_F-18(,ν)e+,O-18 + + + + +F-18->reaction_F-18(,ν)e+,O-18 + + + + + +reaction_F-18(e-,ν)O-18 + + + + +F-18->reaction_F-18(e-,ν)O-18 + + + + + +reaction_F-18(,ν|)e-,Ne-18 + + + + +F-18->reaction_F-18(,ν|)e-,Ne-18 + + + + + +reaction_F-18(e+,ν|)Ne-18 + + + + +F-18->reaction_F-18(e+,ν|)Ne-18 + + + + + +F-19 + +F-19 + + + +reaction_f19(p,n)ne19 + + + + +F-19->reaction_f19(p,n)ne19 + + + + + +reaction_f19(a,p)ne22 + + + + +F-19->reaction_f19(a,p)ne22 + + + + + +reaction_f19(p,g)ne20 + + + + +F-19->reaction_f19(p,g)ne20 + + + + + +reaction_f19(n,g)f20 + + + + +F-19->reaction_f19(n,g)f20 + + + + + +reaction_f19(a,g)na23 + + + + +F-19->reaction_f19(a,g)na23 + + + + + +reaction_F-19(,ν)e+,O-19 + + + + +F-19->reaction_F-19(,ν)e+,O-19 + + + + + +reaction_F-19(e-,ν)O-19 + + + + +F-19->reaction_F-19(e-,ν)O-19 + + + + + +reaction_F-19(,ν|)e-,Ne-19 + + + + +F-19->reaction_F-19(,ν|)e-,Ne-19 + + + + + +reaction_F-19(e+,ν|)Ne-19 + + + + +F-19->reaction_F-19(e+,ν|)Ne-19 + + + + + +F-20 + +F-20 + + + +reaction_f20(a,p)ne23 + + + + +F-20->reaction_f20(a,p)ne23 + + + + + +reaction_f20(p,n)ne20 + + + + +F-20->reaction_f20(p,n)ne20 + + + + + +reaction_f20(e-,)ne20 + + + + +F-20->reaction_f20(e-,)ne20 + + + + + +reaction_f20(n,g)f21 + + + + +F-20->reaction_f20(n,g)f21 + + + + + +reaction_f20(p,g)ne21 + + + + +F-20->reaction_f20(p,g)ne21 + + + + + +reaction_f20(a,g)na24 + + + + +F-20->reaction_f20(a,g)na24 + + + + + +reaction_f20(a,n)na23 + + + + +F-20->reaction_f20(a,n)na23 + + + + + +reaction_F-20(,ν)e+,O-20 + + + + +F-20->reaction_F-20(,ν)e+,O-20 + + + + + +reaction_F-20(e-,ν)O-20 + + + + +F-20->reaction_F-20(e-,ν)O-20 + + + + + +reaction_F-20(,ν|)e-,Ne-20 + + + + +F-20->reaction_F-20(,ν|)e-,Ne-20 + + + + + +reaction_F-20(e+,ν|)Ne-20 + + + + +F-20->reaction_F-20(e+,ν|)Ne-20 + + + + + +F-21 + +F-21 + + + +reaction_f21(a,p)ne24 + + + + +F-21->reaction_f21(a,p)ne24 + + + + + +reaction_f21(p,g)ne22 + + + + +F-21->reaction_f21(p,g)ne22 + + + + + +reaction_f21(n,g)f22 + + + + +F-21->reaction_f21(n,g)f22 + + + + + +reaction_f21(p,n)ne21 + + + + +F-21->reaction_f21(p,n)ne21 + + + + + +reaction_f21(a,g)na25 + + + + +F-21->reaction_f21(a,g)na25 + + + + + +reaction_f21(e-,)ne21 + + + + +F-21->reaction_f21(e-,)ne21 + + + + + +reaction_f21(a,n)na24 + + + + +F-21->reaction_f21(a,n)na24 + + + + + +reaction_F-21(,ν)e+,O-21 + + + + +F-21->reaction_F-21(,ν)e+,O-21 + + + + + +reaction_F-21(e-,ν)O-21 + + + + +F-21->reaction_F-21(e-,ν)O-21 + + + + + +reaction_F-21(,ν|)e-,Ne-21 + + + + +F-21->reaction_F-21(,ν|)e-,Ne-21 + + + + + +reaction_F-21(e+,ν|)Ne-21 + + + + +F-21->reaction_F-21(e+,ν|)Ne-21 + + + + + +F-22 + +F-22 + + + +F-23 + +F-23 + + + +F-24 + +F-24 + + + +H-1 + +H-1 + + + +reaction_n(2p,p g)d + + + + +H-1->reaction_n(2p,p g)d + + + + + +H-1->reaction_n(2p,p g)d + + + + + +reaction_si31(p,n)p31 + + + + +H-1->reaction_si31(p,n)p31 + + + + + +H-1->reaction_al28(p,n)si28 + + + + + +reaction_na24(p,n)mg24 + + + + +H-1->reaction_na24(p,n)mg24 + + + + + +reaction_ne24(p,n)na24 + + + + +H-1->reaction_ne24(p,n)na24 + + + + + +reaction_ne23(p,n)na23 + + + + +H-1->reaction_ne23(p,n)na23 + + + + + +H-1->reaction_f19(p,n)ne19 + + + + + +reaction_o20(p,n)f20 + + + + +H-1->reaction_o20(p,n)f20 + + + + + +reaction_n16(p,n)o16 + + + + +H-1->reaction_n16(p,n)o16 + + + + + +reaction_n15(p,n)o15 + + + + +H-1->reaction_n15(p,n)o15 + + + + + +reaction_n14(p,n)o14 + + + + +H-1->reaction_n14(p,n)o14 + + + + + +H-1->reaction_f20(p,n)ne20 + + + + + +H-1->reaction_ar35(p,g)k36 + + + + + +reaction_si25(p,g)p26 + + + + +H-1->reaction_si25(p,g)p26 + + + + + +H-1->reaction_cl34(p,g)ar35 + + + + + +reaction_s34(p,g)cl35 + + + + +H-1->reaction_s34(p,g)cl35 + + + + + +reaction_s32(p,g)cl33 + + + + +H-1->reaction_s32(p,g)cl33 + + + + + +reaction_s31(p,g)cl32 + + + + +H-1->reaction_s31(p,g)cl32 + + + + + +reaction_p32(p,g)s33 + + + + +H-1->reaction_p32(p,g)s33 + + + + + +reaction_p31(p,g)s32 + + + + +H-1->reaction_p31(p,g)s32 + + + + + +reaction_p30(p,g)s31 + + + + +H-1->reaction_p30(p,g)s31 + + + + + +reaction_p29(p,g)s30 + + + + +H-1->reaction_p29(p,g)s30 + + + + + +reaction_si31(p,g)p32 + + + + +H-1->reaction_si31(p,g)p32 + + + + + +reaction_si28(p,g)p29 + + + + +H-1->reaction_si28(p,g)p29 + + + + + +reaction_si26(p,g)p27 + + + + +H-1->reaction_si26(p,g)p27 + + + + + +reaction_p32(p,n)s32 + + + + +H-1->reaction_p32(p,n)s32 + + + + + +reaction_mg25(p,g)al26 + + + + +H-1->reaction_mg25(p,g)al26 + + + + + +reaction_mg24(p,g)al25 + + + + +H-1->reaction_mg24(p,g)al25 + + + + + +reaction_mg21(p,)al22 + + + + +H-1->reaction_mg21(p,)al22 + + + + + +reaction_na25(p,g)mg26 + + + + +H-1->reaction_na25(p,g)mg26 + + + + + +reaction_na23(p,g)mg24 + + + + +H-1->reaction_na23(p,g)mg24 + + + + + +reaction_na20(p,g)mg21 + + + + +H-1->reaction_na20(p,g)mg21 + + + + + +reaction_ne20(p,g)na21 + + + + +H-1->reaction_ne20(p,g)na21 + + + + + +reaction_ne19(p,g)na20 + + + + +H-1->reaction_ne19(p,g)na20 + + + + + +H-1->reaction_f21(p,g)ne22 + + + + + +H-1->reaction_f19(p,g)ne20 + + + + + +reaction_o16(p,g)f17 + + + + +H-1->reaction_o16(p,g)f17 + + + + + +reaction_o15(p,)f16 + + + + +H-1->reaction_o15(p,)f16 + + + + + +reaction_n15(p,g)o16 + + + + +H-1->reaction_n15(p,g)o16 + + + + + +reaction_n13(p,g)o14 + + + + +H-1->reaction_n13(p,g)o14 + + + + + +reaction_n12(p,g)o13 + + + + +H-1->reaction_n12(p,g)o13 + + + + + +H-1->reaction_c14(p,g)n15 + + + + + +H-1->reaction_c13(p,g)n14 + + + + + +H-1->reaction_c12(p,g)n13 + + + + + +H-1->reaction_c11(p,g)n12 + + + + + +H-1->reaction_b8(p,g)c9 + + + + + +H-1->reaction_be7(p,g)b8 + + + + + +reaction_li6(p,g)be7 + + + + +H-1->reaction_li6(p,g)be7 + + + + + +reaction_ne24(p,g)na25 + + + + +H-1->reaction_ne24(p,g)na25 + + + + + +reaction_t(p,g)he4 + + + + +H-1->reaction_t(p,g)he4 + + + + + +reaction_d(p,g)he3 + + + + +H-1->reaction_d(p,g)he3 + + + + + +reaction_p(p,e+)d + + + + +H-1->reaction_p(p,e+)d + + + + + +H-1->reaction_p(p,e+)d + + + + + +reaction_na25(p,n)mg25 + + + + +H-1->reaction_na25(p,n)mg25 + + + + + +H-1->reaction_cl31(p,g)ar32 + + + + + +H-1->reaction_al28(p,g)si29 + + + + + +reaction_ne18(p,)na19 + + + + +H-1->reaction_ne18(p,)na19 + + + + + +reaction_si24(p,)p25 + + + + +H-1->reaction_si24(p,)p25 + + + + + +reaction_mg23(p,g)al24 + + + + +H-1->reaction_mg23(p,g)al24 + + + + + +H-1->reaction_c13(p,n)n13 + + + + + +reaction_n14(p,g)o15 + + + + +H-1->reaction_n14(p,g)o15 + + + + + +H-1->reaction_al24(p,g)si25 + + + + + +H-1->reaction_f18(p,g)ne19 + + + + + +reaction_o18(p,g)f19 + + + + +H-1->reaction_o18(p,g)f19 + + + + + +reaction_mg22(p,g)al23 + + + + +H-1->reaction_mg22(p,g)al23 + + + + + +reaction_na21(p,g)mg22 + + + + +H-1->reaction_na21(p,g)mg22 + + + + + +reaction_si30(p,g)p31 + + + + +H-1->reaction_si30(p,g)p31 + + + + + +reaction_n(p,g)d + + + + +H-1->reaction_n(p,g)d + + + + + +H-1->reaction_cl35(p,g)ar36 + + + + + +H-1->reaction_f21(p,n)ne21 + + + + + +reaction_na22(p,g)mg23 + + + + +H-1->reaction_na22(p,g)mg23 + + + + + +H-1->reaction_al25(p,g)si26 + + + + + +reaction_ne21(p,g)na22 + + + + +H-1->reaction_ne21(p,g)na22 + + + + + +reaction_p28(p,g)s29 + + + + +H-1->reaction_p28(p,g)s29 + + + + + +reaction_na23(p,n)mg23 + + + + +H-1->reaction_na23(p,n)mg23 + + + + + +reaction_na24(p,g)mg25 + + + + +H-1->reaction_na24(p,g)mg25 + + + + + +reaction_si27(p,g)p28 + + + + +H-1->reaction_si27(p,g)p28 + + + + + +H-1->reaction_b12(p,n)c12 + + + + + +reaction_o14(p,)f15 + + + + +H-1->reaction_o14(p,)f15 + + + + + +H-1->reaction_f20(p,g)ne21 + + + + + +H-1->reaction_cl32(p,g)ar33 + + + + + +H-1->reaction_f17(p,g)ne18 + + + + + +reaction_ne23(p,g)na24 + + + + +H-1->reaction_ne23(p,g)na24 + + + + + +reaction_he3(p,e+)he4 + + + + +H-1->reaction_he3(p,e+)he4 + + + + + +H-1->reaction_al27(p,g)si28 + + + + + +H-1->reaction_c15(p,n)n15 + + + + + +reaction_mg27(p,n)al27 + + + + +H-1->reaction_mg27(p,n)al27 + + + + + +reaction_mg27(p,g)al28 + + + + +H-1->reaction_mg27(p,g)al28 + + + + + +reaction_o17(p,g)f18 + + + + +H-1->reaction_o17(p,g)f18 + + + + + +reaction_si29(p,g)p30 + + + + +H-1->reaction_si29(p,g)p30 + + + + + +reaction_mg26(p,g)al27 + + + + +H-1->reaction_mg26(p,g)al27 + + + + + +reaction_o20(p,g)f21 + + + + +H-1->reaction_o20(p,g)f21 + + + + + +H-1->reaction_al26(p,g)si27 + + + + + +H-2 + +H-2 + + + +reaction_li7(d,n a)he4 + + + + +H-2->reaction_li7(d,n a)he4 + + + + + +H-2->reaction_c14(d,n)n15 + + + + + +H-2->reaction_c13(d,n)n14 + + + + + +reaction_li7(d,p)li8 + + + + +H-2->reaction_li7(d,p)li8 + + + + + +reaction_he3(d,p)he4 + + + + +H-2->reaction_he3(d,p)he4 + + + + + +reaction_t(d,n)he4 + + + + +H-2->reaction_t(d,n)he4 + + + + + +reaction_d(d,p)t + + + + +H-2->reaction_d(d,p)t + + + + + +H-2->reaction_d(d,p)t + + + + + +reaction_d(d,n)he3 + + + + +H-2->reaction_d(d,n)he3 + + + + + +H-2->reaction_d(d,n)he3 + + + + + +reaction_he4(d,g)li6 + + + + +H-2->reaction_he4(d,g)li6 + + + + + +reaction_d(d,g)he4 + + + + +H-2->reaction_d(d,g)he4 + + + + + +H-2->reaction_d(d,g)he4 + + + + + +H-2->reaction_d(p,g)he3 + + + + + +reaction_d(n,g)t + + + + +H-2->reaction_d(n,g)t + + + + + +reaction_li6(d,p)li7 + + + + +H-2->reaction_li6(d,p)li7 + + + + + +H-2->reaction_be7(d,p a)he4 + + + + + +reaction_li6(d,n)be7 + + + + +H-2->reaction_li6(d,n)be7 + + + + + +H-3 + +H-3 + + + +H-3->reaction_be7(t,p n a)he4 + + + + + +reaction_li7(t,2n a)he4 + + + + +H-3->reaction_li7(t,2n a)he4 + + + + + +reaction_t(he3,p n)he4 + + + + +H-3->reaction_t(he3,p n)he4 + + + + + +reaction_t(t,2n)he4 + + + + +H-3->reaction_t(t,2n)he4 + + + + + +H-3->reaction_t(t,2n)he4 + + + + + +H-3->reaction_t(d,n)he4 + + + + + +reaction_he4(t,g)li7 + + + + +H-3->reaction_he4(t,g)li7 + + + + + +H-3->reaction_t(p,g)he4 + + + + + +reaction_li7(t,n)be9 + + + + +H-3->reaction_li7(t,n)be9 + + + + + +reaction_t(he3,d)he4 + + + + +H-3->reaction_t(he3,d)he4 + + + + + +reaction_t(e-,)he3 + + + + +H-3->reaction_t(e-,)he3 + + + + + +He-3 + +He-3 + + + +He-3->reaction_be7(he3,2p a)he4 + + + + + +He-3->reaction_t(he3,p n)he4 + + + + + +reaction_li7(he3,p n a)he4 + + + + +He-3->reaction_li7(he3,p n a)he4 + + + + + +He-3->reaction_he3(d,p)he4 + + + + + +reaction_he4(he3,g)be7 + + + + +He-3->reaction_he4(he3,g)be7 + + + + + +reaction_he3(n,g)he4 + + + + +He-3->reaction_he3(n,g)he4 + + + + + +reaction_he3(,e+)t + + + + +He-3->reaction_he3(,e+)t + + + + + +He-3->reaction_he3(p,e+)he4 + + + + + +He-3->reaction_t(he3,d)he4 + + + + + +reaction_he3(he3,2p)he4 + + + + +He-3->reaction_he3(he3,2p)he4 + + + + + +He-3->reaction_he3(he3,2p)he4 + + + + + +He-4 + +He-4 + + + +reaction_o13(a,2p)o15 + + + + +He-4->reaction_o13(a,2p)o15 + + + + + +He-4->reaction_cl35(a,p)ar38 + + + + + +He-4->reaction_cl34(a,p)ar37 + + + + + +He-4->reaction_cl31(a,p)ar34 + + + + + +reaction_s34(a,p)cl37 + + + + +He-4->reaction_s34(a,p)cl37 + + + + + +reaction_s31(a,p)cl34 + + + + +He-4->reaction_s31(a,p)cl34 + + + + + +reaction_p31(a,p)s34 + + + + +He-4->reaction_p31(a,p)s34 + + + + + +reaction_p30(a,p)s33 + + + + +He-4->reaction_p30(a,p)s33 + + + + + +reaction_si26(a,p)p29 + + + + +He-4->reaction_si26(a,p)p29 + + + + + +reaction_si24(a,p)p27 + + + + +He-4->reaction_si24(a,p)p27 + + + + + +reaction_si27(a,p)p30 + + + + +He-4->reaction_si27(a,p)p30 + + + + + +He-4->reaction_al27(a,p)si30 + + + + + +He-4->reaction_al27(a,n)p30 + + + + + +He-4->reaction_al24(a,p)si27 + + + + + +reaction_mg27(a,n)si30 + + + + +He-4->reaction_mg27(a,n)si30 + + + + + +reaction_mg26(a,n)si29 + + + + +He-4->reaction_mg26(a,n)si29 + + + + + +reaction_mg25(a,n)si28 + + + + +He-4->reaction_mg25(a,n)si28 + + + + + +reaction_mg22(a,p)al25 + + + + +He-4->reaction_mg22(a,p)al25 + + + + + +reaction_mg21(a,p)al24 + + + + +He-4->reaction_mg21(a,p)al24 + + + + + +reaction_mg20(a,p)al23 + + + + +He-4->reaction_mg20(a,p)al23 + + + + + +reaction_na25(a,n)al28 + + + + +He-4->reaction_na25(a,n)al28 + + + + + +reaction_na24(a,p)mg27 + + + + +He-4->reaction_na24(a,p)mg27 + + + + + +reaction_na24(a,n)al27 + + + + +He-4->reaction_na24(a,n)al27 + + + + + +reaction_na22(a,p)mg25 + + + + +He-4->reaction_na22(a,p)mg25 + + + + + +reaction_na20(a,p)mg23 + + + + +He-4->reaction_na20(a,p)mg23 + + + + + +He-4->reaction_al25(a,p)si28 + + + + + +reaction_ne24(a,n)mg27 + + + + +He-4->reaction_ne24(a,n)mg27 + + + + + +reaction_ne23(a,n)mg26 + + + + +He-4->reaction_ne23(a,n)mg26 + + + + + +He-4->reaction_ar35(a,p)k38 + + + + + +reaction_ne18(a,p)na21 + + + + +He-4->reaction_ne18(a,p)na21 + + + + + +reaction_ne16(a,p)na19 + + + + +He-4->reaction_ne16(a,p)na19 + + + + + +He-4->reaction_f21(a,p)ne24 + + + + + +He-4->reaction_f20(a,p)ne23 + + + + + +He-4->reaction_f18(a,p)ne21 + + + + + +He-4->reaction_f15(a,p)ne18 + + + + + +reaction_o18(a,n)ne21 + + + + +He-4->reaction_o18(a,n)ne21 + + + + + +He-4->reaction_f19(a,p)ne22 + + + + + +He-4->reaction_al28(a,n)p31 + + + + + +reaction_o13(a,p)f16 + + + + +He-4->reaction_o13(a,p)f16 + + + + + +reaction_n13(a,p)o16 + + + + +He-4->reaction_n13(a,p)o16 + + + + + +reaction_n12(a,p)o15 + + + + +He-4->reaction_n12(a,p)o15 + + + + + +He-4->reaction_c15(a,n)o18 + + + + + +He-4->reaction_c13(a,n)o16 + + + + + +He-4->reaction_c11(a,p)n14 + + + + + +He-4->reaction_b13(a,n)n16 + + + + + +He-4->reaction_b12(a,n)n15 + + + + + +He-4->reaction_b8(a,p)c11 + + + + + +reaction_o14(a,p)f17 + + + + +He-4->reaction_o14(a,p)f17 + + + + + +He-4->reaction_f16(a,p)ne19 + + + + + +reaction_ne17(a,g)mg21 + + + + +He-4->reaction_ne17(a,g)mg21 + + + + + +He-4->reaction_ar35(a,g)ca39 + + + + + +He-4->reaction_cl32(a,g)k36 + + + + + +He-4->reaction_cl31(a,g)k35 + + + + + +reaction_s34(a,g)ar38 + + + + +He-4->reaction_s34(a,g)ar38 + + + + + +reaction_s32(a,g)ar36 + + + + +He-4->reaction_s32(a,g)ar36 + + + + + +He-4->reaction_f16(a,g)na20 + + + + + +reaction_p32(a,g)cl36 + + + + +He-4->reaction_p32(a,g)cl36 + + + + + +reaction_p30(a,g)cl34 + + + + +He-4->reaction_p30(a,g)cl34 + + + + + +reaction_p29(a,g)cl33 + + + + +He-4->reaction_p29(a,g)cl33 + + + + + +reaction_p28(a,g)cl32 + + + + +He-4->reaction_p28(a,g)cl32 + + + + + +He-4->reaction_cl32(a,p)ar35 + + + + + +reaction_si29(a,g)s33 + + + + +He-4->reaction_si29(a,g)s33 + + + + + +reaction_si27(a,g)s31 + + + + +He-4->reaction_si27(a,g)s31 + + + + + +reaction_si24(a,g)s28 + + + + +He-4->reaction_si24(a,g)s28 + + + + + +He-4->reaction_cl34(a,g)k38 + + + + + +reaction_n14(a,n)f17 + + + + +He-4->reaction_n14(a,n)f17 + + + + + +He-4->reaction_al28(a,g)p32 + + + + + +He-4->reaction_al27(a,g)p31 + + + + + +He-4->reaction_al26(a,g)p30 + + + + + +He-4->reaction_al25(a,g)p29 + + + + + +He-4->reaction_al24(a,g)p28 + + + + + +reaction_mg25(a,g)si29 + + + + +He-4->reaction_mg25(a,g)si29 + + + + + +reaction_si30(a,g)s34 + + + + +He-4->reaction_si30(a,g)s34 + + + + + +reaction_mg21(a,g)si25 + + + + +He-4->reaction_mg21(a,g)si25 + + + + + +reaction_na25(a,p)mg28 + + + + +He-4->reaction_na25(a,p)mg28 + + + + + +reaction_mg20(a,g)si24 + + + + +He-4->reaction_mg20(a,g)si24 + + + + + +He-4->reaction_al28(a,p)si31 + + + + + +reaction_na23(a,g)al27 + + + + +He-4->reaction_na23(a,g)al27 + + + + + +reaction_na21(a,g)al25 + + + + +He-4->reaction_na21(a,g)al25 + + + + + +reaction_na20(a,g)al24 + + + + +He-4->reaction_na20(a,g)al24 + + + + + +reaction_s34(a,n)ar37 + + + + +He-4->reaction_s34(a,n)ar37 + + + + + +reaction_ne24(a,g)mg28 + + + + +He-4->reaction_ne24(a,g)mg28 + + + + + +He-4->reaction_he4(he3,g)be7 + + + + + +reaction_ne20(a,g)mg24 + + + + +He-4->reaction_ne20(a,g)mg24 + + + + + +reaction_ne18(a,g)mg22 + + + + +He-4->reaction_ne18(a,g)mg22 + + + + + +He-4->reaction_f17(a,g)na21 + + + + + +He-4->reaction_f15(a,g)na19 + + + + + +He-4->reaction_b13(a,g)n17 + + + + + +reaction_p28(a,p)s31 + + + + +He-4->reaction_p28(a,p)s31 + + + + + +reaction_o15(a,g)ne19 + + + + +He-4->reaction_o15(a,g)ne19 + + + + + +reaction_n15(a,g)f19 + + + + +He-4->reaction_n15(a,g)f19 + + + + + +reaction_n14(a,g)f18 + + + + +He-4->reaction_n14(a,g)f18 + + + + + +He-4->reaction_c14(a,g)o18 + + + + + +He-4->reaction_c12(a,g)o16 + + + + + +reaction_li6(a,g)b10 + + + + +He-4->reaction_li6(a,g)b10 + + + + + +reaction_p31(a,g)cl35 + + + + +He-4->reaction_p31(a,g)cl35 + + + + + +He-4->reaction_he4(t,g)li7 + + + + + +He-4->reaction_he4(d,g)li6 + + + + + +reaction_si31(a,g)s35 + + + + +He-4->reaction_si31(a,g)s35 + + + + + +reaction_o14(a,g)ne18 + + + + +He-4->reaction_o14(a,g)ne18 + + + + + +reaction_na25(a,g)al29 + + + + +He-4->reaction_na25(a,g)al29 + + + + + +reaction_ne17(a,p)na20 + + + + +He-4->reaction_ne17(a,p)na20 + + + + + +reaction_o20(a,n)ne23 + + + + +He-4->reaction_o20(a,n)ne23 + + + + + +reaction_mg27(a,g)si31 + + + + +He-4->reaction_mg27(a,g)si31 + + + + + +He-4->reaction_be7(a,g)c11 + + + + + +reaction_ne19(a,g)mg23 + + + + +He-4->reaction_ne19(a,g)mg23 + + + + + +reaction_p29(a,p)s32 + + + + +He-4->reaction_p29(a,p)s32 + + + + + +reaction_si26(a,g)s30 + + + + +He-4->reaction_si26(a,g)s30 + + + + + +reaction_si25(a,g)s29 + + + + +He-4->reaction_si25(a,g)s29 + + + + + +reaction_o20(a,g)ne24 + + + + +He-4->reaction_o20(a,g)ne24 + + + + + +reaction_ne16(a,g)mg20 + + + + +He-4->reaction_ne16(a,g)mg20 + + + + + +reaction_n16(a,n)f19 + + + + +He-4->reaction_n16(a,n)f19 + + + + + +reaction_si31(a,n)s34 + + + + +He-4->reaction_si31(a,n)s34 + + + + + +reaction_li7(a,g)b11 + + + + +He-4->reaction_li7(a,g)b11 + + + + + +reaction_o17(a,n)ne20 + + + + +He-4->reaction_o17(a,n)ne20 + + + + + +reaction_o17(a,g)ne21 + + + + +He-4->reaction_o17(a,g)ne21 + + + + + +He-4->reaction_f18(a,g)na22 + + + + + +He-4->reaction_f21(a,g)na25 + + + + + +reaction_si28(a,g)s32 + + + + +He-4->reaction_si28(a,g)s32 + + + + + +reaction_mg24(a,g)si28 + + + + +He-4->reaction_mg24(a,g)si28 + + + + + +reaction_mg26(a,g)si30 + + + + +He-4->reaction_mg26(a,g)si30 + + + + + +reaction_na24(a,g)al28 + + + + +He-4->reaction_na24(a,g)al28 + + + + + +reaction_na22(a,g)al26 + + + + +He-4->reaction_na22(a,g)al26 + + + + + +He-4->reaction_al26(a,p)si29 + + + + + +reaction_ne19(a,p)na22 + + + + +He-4->reaction_ne19(a,p)na22 + + + + + +reaction_o18(a,g)ne22 + + + + +He-4->reaction_o18(a,g)ne22 + + + + + +reaction_mg23(a,g)si27 + + + + +He-4->reaction_mg23(a,g)si27 + + + + + +reaction_si25(a,p)p28 + + + + +He-4->reaction_si25(a,p)p28 + + + + + +He-4->reaction_f20(a,g)na24 + + + + + +He-4->reaction_f20(a,n)na23 + + + + + +He-4->reaction_f19(a,g)na23 + + + + + +reaction_ne23(a,g)mg27 + + + + +He-4->reaction_ne23(a,g)mg27 + + + + + +reaction_mg23(a,p)al26 + + + + +He-4->reaction_mg23(a,p)al26 + + + + + +reaction_na23(a,p)mg26 + + + + +He-4->reaction_na23(a,p)mg26 + + + + + +reaction_mg22(a,g)si26 + + + + +He-4->reaction_mg22(a,g)si26 + + + + + +He-4->reaction_f21(a,n)na24 + + + + + +reaction_s31(a,g)ar35 + + + + +He-4->reaction_s31(a,g)ar35 + + + + + +reaction_o16(a,g)ne20 + + + + +He-4->reaction_o16(a,g)ne20 + + + + + +reaction_ne21(a,n)mg24 + + + + +He-4->reaction_ne21(a,n)mg24 + + + + + +reaction_ne21(a,g)mg25 + + + + +He-4->reaction_ne21(a,g)mg25 + + + + + +He-4->reaction_cl35(a,g)k39 + + + + + +He-6 + +He-6 + + + +K-35 + +K-35 + + + +K-36 + +K-36 + + + +K-38 + +K-38 + + + +K-39 + +K-39 + + + +Li-6 + +Li-6 + + + +Li-6->reaction_li6(a,g)b10 + + + + + +Li-6->reaction_li6(p,g)be7 + + + + + +reaction_li6(n,g)li7 + + + + +Li-6->reaction_li6(n,g)li7 + + + + + +Li-6->reaction_li6(d,p)li7 + + + + + +Li-6->reaction_li6(d,n)be7 + + + + + +reaction_Li-6(,ν)e+,He-6 + + + + +Li-6->reaction_Li-6(,ν)e+,He-6 + + + + + +reaction_Li-6(e-,ν)He-6 + + + + +Li-6->reaction_Li-6(e-,ν)He-6 + + + + + +reaction_Li-6(,ν|)e-,Be-6 + + + + +Li-6->reaction_Li-6(,ν|)e-,Be-6 + + + + + +reaction_Li-6(e+,ν|)Be-6 + + + + +Li-6->reaction_Li-6(e+,ν|)Be-6 + + + + + +Li-7 + +Li-7 + + + +Li-7->reaction_li7(t,2n a)he4 + + + + + +Li-7->reaction_li7(d,n a)he4 + + + + + +Li-7->reaction_li7(he3,p n a)he4 + + + + + +Li-7->reaction_li7(d,p)li8 + + + + + +reaction_li7(n,g)li8 + + + + +Li-7->reaction_li7(n,g)li8 + + + + + +Li-7->reaction_li7(t,n)be9 + + + + + +Li-7->reaction_li7(a,g)b11 + + + + + +Li-8 + +Li-8 + + + +Mg-20 + +Mg-20 + + + +Mg-20->reaction_mg20(a,p)al23 + + + + + +Mg-20->reaction_mg20(a,g)si24 + + + + + +reaction_mg20(n,g)mg21 + + + + +Mg-20->reaction_mg20(n,g)mg21 + + + + + +reaction_mg20(,e+)na20 + + + + +Mg-20->reaction_mg20(,e+)na20 + + + + + +reaction_mg20(,e+ p)ne19 + + + + +Mg-20->reaction_mg20(,e+ p)ne19 + + + + + +reaction_Mg-20(,ν)e+,Na-20 + + + + +Mg-20->reaction_Mg-20(,ν)e+,Na-20 + + + + + +reaction_Mg-20(e-,ν)Na-20 + + + + +Mg-20->reaction_Mg-20(e-,ν)Na-20 + + + + + +Mg-21 + +Mg-21 + + + +Mg-21->reaction_mg21(a,p)al24 + + + + + +Mg-21->reaction_mg21(a,g)si25 + + + + + +Mg-21->reaction_mg21(p,)al22 + + + + + +reaction_mg21(n,g)mg22 + + + + +Mg-21->reaction_mg21(n,g)mg22 + + + + + +reaction_mg21(,e+ p)ne20 + + + + +Mg-21->reaction_mg21(,e+ p)ne20 + + + + + +reaction_mg21(,e+ a)f17 + + + + +Mg-21->reaction_mg21(,e+ a)f17 + + + + + +reaction_mg21(,e+)na21 + + + + +Mg-21->reaction_mg21(,e+)na21 + + + + + +reaction_Mg-21(,ν)e+,Na-21 + + + + +Mg-21->reaction_Mg-21(,ν)e+,Na-21 + + + + + +reaction_Mg-21(e-,ν)Na-21 + + + + +Mg-21->reaction_Mg-21(e-,ν)Na-21 + + + + + +reaction_Mg-21(,ν|)e-,Al-21 + + + + +Mg-21->reaction_Mg-21(,ν|)e-,Al-21 + + + + + +reaction_Mg-21(e+,ν|)Al-21 + + + + +Mg-21->reaction_Mg-21(e+,ν|)Al-21 + + + + + +Mg-22 + +Mg-22 + + + +Mg-22->reaction_mg22(a,p)al25 + + + + + +reaction_mg22(n,g)mg23 + + + + +Mg-22->reaction_mg22(n,g)mg23 + + + + + +Mg-22->reaction_mg22(p,g)al23 + + + + + +reaction_mg22(,e+)na22 + + + + +Mg-22->reaction_mg22(,e+)na22 + + + + + +Mg-22->reaction_mg22(a,g)si26 + + + + + +reaction_Mg-22(,ν)e+,Na-22 + + + + +Mg-22->reaction_Mg-22(,ν)e+,Na-22 + + + + + +reaction_Mg-22(e-,ν)Na-22 + + + + +Mg-22->reaction_Mg-22(e-,ν)Na-22 + + + + + +reaction_Mg-22(,ν|)e-,Al-22 + + + + +Mg-22->reaction_Mg-22(,ν|)e-,Al-22 + + + + + +reaction_Mg-22(e+,ν|)Al-22 + + + + +Mg-22->reaction_Mg-22(e+,ν|)Al-22 + + + + + +Mg-23 + +Mg-23 + + + +reaction_mg23(n,g)mg24 + + + + +Mg-23->reaction_mg23(n,g)mg24 + + + + + +Mg-23->reaction_mg23(p,g)al24 + + + + + +Mg-23->reaction_mg23(a,g)si27 + + + + + +reaction_mg23(,e+)na23 + + + + +Mg-23->reaction_mg23(,e+)na23 + + + + + +Mg-23->reaction_mg23(a,p)al26 + + + + + +reaction_Mg-23(,ν)e+,Na-23 + + + + +Mg-23->reaction_Mg-23(,ν)e+,Na-23 + + + + + +reaction_Mg-23(e-,ν)Na-23 + + + + +Mg-23->reaction_Mg-23(e-,ν)Na-23 + + + + + +reaction_Mg-23(,ν|)e-,Al-23 + + + + +Mg-23->reaction_Mg-23(,ν|)e-,Al-23 + + + + + +reaction_Mg-23(e+,ν|)Al-23 + + + + +Mg-23->reaction_Mg-23(e+,ν|)Al-23 + + + + + +Mg-24 + +Mg-24 + + + +Mg-24->reaction_mg24(p,g)al25 + + + + + +reaction_mg24(n,g)mg25 + + + + +Mg-24->reaction_mg24(n,g)mg25 + + + + + +Mg-24->reaction_mg24(a,g)si28 + + + + + +reaction_Mg-24(,ν)e+,Na-24 + + + + +Mg-24->reaction_Mg-24(,ν)e+,Na-24 + + + + + +reaction_Mg-24(e-,ν)Na-24 + + + + +Mg-24->reaction_Mg-24(e-,ν)Na-24 + + + + + +reaction_Mg-24(,ν|)e-,Al-24 + + + + +Mg-24->reaction_Mg-24(,ν|)e-,Al-24 + + + + + +reaction_Mg-24(e+,ν|)Al-24 + + + + +Mg-24->reaction_Mg-24(e+,ν|)Al-24 + + + + + +Mg-25 + +Mg-25 + + + +Mg-25->reaction_mg25(a,n)si28 + + + + + +Mg-25->reaction_mg25(a,g)si29 + + + + + +Mg-25->reaction_mg25(p,g)al26 + + + + + +reaction_mg25(n,g)mg26 + + + + +Mg-25->reaction_mg25(n,g)mg26 + + + + + +reaction_Mg-25(,ν)e+,Na-25 + + + + +Mg-25->reaction_Mg-25(,ν)e+,Na-25 + + + + + +reaction_Mg-25(e-,ν)Na-25 + + + + +Mg-25->reaction_Mg-25(e-,ν)Na-25 + + + + + +reaction_Mg-25(,ν|)e-,Al-25 + + + + +Mg-25->reaction_Mg-25(,ν|)e-,Al-25 + + + + + +reaction_Mg-25(e+,ν|)Al-25 + + + + +Mg-25->reaction_Mg-25(e+,ν|)Al-25 + + + + + +Mg-26 + +Mg-26 + + + +Mg-26->reaction_mg26(a,n)si29 + + + + + +reaction_mg26(n,g)mg27 + + + + +Mg-26->reaction_mg26(n,g)mg27 + + + + + +Mg-26->reaction_mg26(a,g)si30 + + + + + +Mg-26->reaction_mg26(p,g)al27 + + + + + +reaction_Mg-26(,ν)e+,Na-26 + + + + +Mg-26->reaction_Mg-26(,ν)e+,Na-26 + + + + + +reaction_Mg-26(e-,ν)Na-26 + + + + +Mg-26->reaction_Mg-26(e-,ν)Na-26 + + + + + +reaction_Mg-26(,ν|)e-,Al-26 + + + + +Mg-26->reaction_Mg-26(,ν|)e-,Al-26 + + + + + +reaction_Mg-26(e+,ν|)Al-26 + + + + +Mg-26->reaction_Mg-26(e+,ν|)Al-26 + + + + + +Mg-27 + +Mg-27 + + + +Mg-27->reaction_mg27(a,n)si30 + + + + + +Mg-27->reaction_mg27(a,g)si31 + + + + + +reaction_mg27(n,g)mg28 + + + + +Mg-27->reaction_mg27(n,g)mg28 + + + + + +Mg-27->reaction_mg27(p,n)al27 + + + + + +Mg-27->reaction_mg27(p,g)al28 + + + + + +reaction_mg27(e-,)al27 + + + + +Mg-27->reaction_mg27(e-,)al27 + + + + + +reaction_Mg-27(,ν)e+,Na-27 + + + + +Mg-27->reaction_Mg-27(,ν)e+,Na-27 + + + + + +reaction_Mg-27(e-,ν)Na-27 + + + + +Mg-27->reaction_Mg-27(e-,ν)Na-27 + + + + + +reaction_Mg-27(,ν|)e-,Al-27 + + + + +Mg-27->reaction_Mg-27(,ν|)e-,Al-27 + + + + + +reaction_Mg-27(e+,ν|)Al-27 + + + + +Mg-27->reaction_Mg-27(e+,ν|)Al-27 + + + + + +Mg-28 + +Mg-28 + + + +N-11 + +N-11 + + + +N-12 + +N-12 + + + +N-12->reaction_n12(a,p)o15 + + + + + +N-12->reaction_n12(p,g)o13 + + + + + +reaction_n12(,e+)c12 + + + + +N-12->reaction_n12(,e+)c12 + + + + + +reaction_N-12(,ν)e+,C-12 + + + + +N-12->reaction_N-12(,ν)e+,C-12 + + + + + +reaction_N-12(e-,ν)C-12 + + + + +N-12->reaction_N-12(e-,ν)C-12 + + + + + +reaction_N-12(,ν|)e-,O-12 + + + + +N-12->reaction_N-12(,ν|)e-,O-12 + + + + + +reaction_N-12(e+,ν|)O-12 + + + + +N-12->reaction_N-12(e+,ν|)O-12 + + + + + +N-13 + +N-13 + + + +N-13->reaction_n13(a,p)o16 + + + + + +reaction_n13(,e+)c13 + + + + +N-13->reaction_n13(,e+)c13 + + + + + +N-13->reaction_n13(p,g)o14 + + + + + +reaction_n13(n,g)n14 + + + + +N-13->reaction_n13(n,g)n14 + + + + + +reaction_N-13(,ν)e+,C-13 + + + + +N-13->reaction_N-13(,ν)e+,C-13 + + + + + +reaction_N-13(e-,ν)C-13 + + + + +N-13->reaction_N-13(e-,ν)C-13 + + + + + +reaction_N-13(,ν|)e-,O-13 + + + + +N-13->reaction_N-13(,ν|)e-,O-13 + + + + + +reaction_N-13(e+,ν|)O-13 + + + + +N-13->reaction_N-13(e+,ν|)O-13 + + + + + +N-14 + +N-14 + + + +N-14->reaction_n14(p,n)o14 + + + + + +N-14->reaction_n14(a,n)f17 + + + + + +N-14->reaction_n14(a,g)f18 + + + + + +N-14->reaction_n14(p,g)o15 + + + + + +reaction_n14(n,g)n15 + + + + +N-14->reaction_n14(n,g)n15 + + + + + +reaction_N-14(,ν)e+,C-14 + + + + +N-14->reaction_N-14(,ν)e+,C-14 + + + + + +reaction_N-14(e-,ν)C-14 + + + + +N-14->reaction_N-14(e-,ν)C-14 + + + + + +reaction_N-14(,ν|)e-,O-14 + + + + +N-14->reaction_N-14(,ν|)e-,O-14 + + + + + +reaction_N-14(e+,ν|)O-14 + + + + +N-14->reaction_N-14(e+,ν|)O-14 + + + + + +N-15 + +N-15 + + + +N-15->reaction_n15(p,n)o15 + + + + + +N-15->reaction_n15(a,g)f19 + + + + + +N-15->reaction_n15(p,g)o16 + + + + + +reaction_n15(n,g)n16 + + + + +N-15->reaction_n15(n,g)n16 + + + + + +reaction_N-15(,ν)e+,C-15 + + + + +N-15->reaction_N-15(,ν)e+,C-15 + + + + + +reaction_N-15(e-,ν)C-15 + + + + +N-15->reaction_N-15(e-,ν)C-15 + + + + + +reaction_N-15(,ν|)e-,O-15 + + + + +N-15->reaction_N-15(,ν|)e-,O-15 + + + + + +reaction_N-15(e+,ν|)O-15 + + + + +N-15->reaction_N-15(e+,ν|)O-15 + + + + + +N-16 + +N-16 + + + +N-16->reaction_n16(p,n)o16 + + + + + +reaction_n16(n,g)n17 + + + + +N-16->reaction_n16(n,g)n17 + + + + + +N-16->reaction_n16(a,n)f19 + + + + + +reaction_n16(,e- a)c12 + + + + +N-16->reaction_n16(,e- a)c12 + + + + + +reaction_n16(e-,)o16 + + + + +N-16->reaction_n16(e-,)o16 + + + + + +reaction_N-16(,ν)e+,C-16 + + + + +N-16->reaction_N-16(,ν)e+,C-16 + + + + + +reaction_N-16(e-,ν)C-16 + + + + +N-16->reaction_N-16(e-,ν)C-16 + + + + + +reaction_N-16(,ν|)e-,O-16 + + + + +N-16->reaction_N-16(,ν|)e-,O-16 + + + + + +reaction_N-16(e+,ν|)O-16 + + + + +N-16->reaction_N-16(e+,ν|)O-16 + + + + + +N-17 + +N-17 + + + +reaction_n17(n,g)n18 + + + + +N-17->reaction_n17(n,g)n18 + + + + + +reaction_n17(e-,)o17 + + + + +N-17->reaction_n17(e-,)o17 + + + + + +reaction_n17(,e- n)o16 + + + + +N-17->reaction_n17(,e- n)o16 + + + + + +reaction_N-17(,ν)e+,C-17 + + + + +N-17->reaction_N-17(,ν)e+,C-17 + + + + + +reaction_N-17(e-,ν)C-17 + + + + +N-17->reaction_N-17(e-,ν)C-17 + + + + + +reaction_N-17(,ν|)e-,O-17 + + + + +N-17->reaction_N-17(,ν|)e-,O-17 + + + + + +reaction_N-17(e+,ν|)O-17 + + + + +N-17->reaction_N-17(e+,ν|)O-17 + + + + + +N-18 + +N-18 + + + +N-20 + +N-20 + + + +Na-17 + +Na-17 + + + +Na-18 + +Na-18 + + + +Na-19 + +Na-19 + + + +Na-20 + +Na-20 + + + +Na-20->reaction_na20(a,p)mg23 + + + + + +reaction_na20(,e+)ne20 + + + + +Na-20->reaction_na20(,e+)ne20 + + + + + +Na-20->reaction_na20(a,g)al24 + + + + + +Na-20->reaction_na20(p,g)mg21 + + + + + +reaction_na20(n,g)na21 + + + + +Na-20->reaction_na20(n,g)na21 + + + + + +reaction_na20(,e+ a)o16 + + + + +Na-20->reaction_na20(,e+ a)o16 + + + + + +reaction_Na-20(,ν)e+,Ne-20 + + + + +Na-20->reaction_Na-20(,ν)e+,Ne-20 + + + + + +reaction_Na-20(e-,ν)Ne-20 + + + + +Na-20->reaction_Na-20(e-,ν)Ne-20 + + + + + +reaction_Na-20(,ν|)e-,Mg-20 + + + + +Na-20->reaction_Na-20(,ν|)e-,Mg-20 + + + + + +reaction_Na-20(e+,ν|)Mg-20 + + + + +Na-20->reaction_Na-20(e+,ν|)Mg-20 + + + + + +Na-21 + +Na-21 + + + +Na-21->reaction_na21(a,g)al25 + + + + + +reaction_na21(n,g)na22 + + + + +Na-21->reaction_na21(n,g)na22 + + + + + +Na-21->reaction_na21(p,g)mg22 + + + + + +reaction_na21(,e+)ne21 + + + + +Na-21->reaction_na21(,e+)ne21 + + + + + +reaction_Na-21(,ν)e+,Ne-21 + + + + +Na-21->reaction_Na-21(,ν)e+,Ne-21 + + + + + +reaction_Na-21(e-,ν)Ne-21 + + + + +Na-21->reaction_Na-21(e-,ν)Ne-21 + + + + + +reaction_Na-21(,ν|)e-,Mg-21 + + + + +Na-21->reaction_Na-21(,ν|)e-,Mg-21 + + + + + +reaction_Na-21(e+,ν|)Mg-21 + + + + +Na-21->reaction_Na-21(e+,ν|)Mg-21 + + + + + +Na-22 + +Na-22 + + + +Na-22->reaction_na22(a,p)mg25 + + + + + +reaction_na22(n,g)na23 + + + + +Na-22->reaction_na22(n,g)na23 + + + + + +Na-22->reaction_na22(p,g)mg23 + + + + + +Na-22->reaction_na22(a,g)al26 + + + + + +reaction_na22(,e+)ne22 + + + + +Na-22->reaction_na22(,e+)ne22 + + + + + +reaction_Na-22(,ν)e+,Ne-22 + + + + +Na-22->reaction_Na-22(,ν)e+,Ne-22 + + + + + +reaction_Na-22(e-,ν)Ne-22 + + + + +Na-22->reaction_Na-22(e-,ν)Ne-22 + + + + + +reaction_Na-22(,ν|)e-,Mg-22 + + + + +Na-22->reaction_Na-22(,ν|)e-,Mg-22 + + + + + +reaction_Na-22(e+,ν|)Mg-22 + + + + +Na-22->reaction_Na-22(e+,ν|)Mg-22 + + + + + +Na-23 + +Na-23 + + + +Na-23->reaction_na23(a,g)al27 + + + + + +Na-23->reaction_na23(p,g)mg24 + + + + + +reaction_na23(n,g)na24 + + + + +Na-23->reaction_na23(n,g)na24 + + + + + +Na-23->reaction_na23(p,n)mg23 + + + + + +Na-23->reaction_na23(a,p)mg26 + + + + + +reaction_Na-23(,ν)e+,Ne-23 + + + + +Na-23->reaction_Na-23(,ν)e+,Ne-23 + + + + + +reaction_Na-23(e-,ν)Ne-23 + + + + +Na-23->reaction_Na-23(e-,ν)Ne-23 + + + + + +reaction_Na-23(,ν|)e-,Mg-23 + + + + +Na-23->reaction_Na-23(,ν|)e-,Mg-23 + + + + + +reaction_Na-23(e+,ν|)Mg-23 + + + + +Na-23->reaction_Na-23(e+,ν|)Mg-23 + + + + + +Na-24 + +Na-24 + + + +Na-24->reaction_na24(a,p)mg27 + + + + + +Na-24->reaction_na24(a,n)al27 + + + + + +Na-24->reaction_na24(p,n)mg24 + + + + + +reaction_na24(n,g)na25 + + + + +Na-24->reaction_na24(n,g)na25 + + + + + +Na-24->reaction_na24(p,g)mg25 + + + + + +reaction_na24(e-,)mg24 + + + + +Na-24->reaction_na24(e-,)mg24 + + + + + +Na-24->reaction_na24(a,g)al28 + + + + + +reaction_Na-24(,ν)e+,Ne-24 + + + + +Na-24->reaction_Na-24(,ν)e+,Ne-24 + + + + + +reaction_Na-24(e-,ν)Ne-24 + + + + +Na-24->reaction_Na-24(e-,ν)Ne-24 + + + + + +reaction_Na-24(,ν|)e-,Mg-24 + + + + +Na-24->reaction_Na-24(,ν|)e-,Mg-24 + + + + + +reaction_Na-24(e+,ν|)Mg-24 + + + + +Na-24->reaction_Na-24(e+,ν|)Mg-24 + + + + + +Na-25 + +Na-25 + + + +Na-25->reaction_na25(a,n)al28 + + + + + +Na-25->reaction_na25(a,p)mg28 + + + + + +Na-25->reaction_na25(p,g)mg26 + + + + + +Na-25->reaction_na25(p,n)mg25 + + + + + +Na-25->reaction_na25(a,g)al29 + + + + + +reaction_na25(e-,)mg25 + + + + +Na-25->reaction_na25(e-,)mg25 + + + + + +reaction_na25(n,g)na26 + + + + +Na-25->reaction_na25(n,g)na26 + + + + + +reaction_Na-25(,ν)e+,Ne-25 + + + + +Na-25->reaction_Na-25(,ν)e+,Ne-25 + + + + + +reaction_Na-25(e-,ν)Ne-25 + + + + +Na-25->reaction_Na-25(e-,ν)Ne-25 + + + + + +reaction_Na-25(,ν|)e-,Mg-25 + + + + +Na-25->reaction_Na-25(,ν|)e-,Mg-25 + + + + + +reaction_Na-25(e+,ν|)Mg-25 + + + + +Na-25->reaction_Na-25(e+,ν|)Mg-25 + + + + + +Na-26 + +Na-26 + + + +Na-27 + +Na-27 + + + +Ne-15 + +Ne-15 + + + +Ne-16 + +Ne-16 + + + +Ne-16->reaction_ne16(a,p)na19 + + + + + +Ne-16->reaction_ne16(a,g)mg20 + + + + + +reaction_ne16(n,g)ne17 + + + + +Ne-16->reaction_ne16(n,g)ne17 + + + + + +reaction_Ne-16(,ν)e+,F-16 + + + + +Ne-16->reaction_Ne-16(,ν)e+,F-16 + + + + + +reaction_Ne-16(e-,ν)F-16 + + + + +Ne-16->reaction_Ne-16(e-,ν)F-16 + + + + + +Ne-17 + +Ne-17 + + + +Ne-17->reaction_ne17(a,g)mg21 + + + + + +reaction_ne17(n,g)ne18 + + + + +Ne-17->reaction_ne17(n,g)ne18 + + + + + +Ne-17->reaction_ne17(a,p)na20 + + + + + +reaction_ne17(,e+ p)o16 + + + + +Ne-17->reaction_ne17(,e+ p)o16 + + + + + +reaction_ne17(,e+)f17 + + + + +Ne-17->reaction_ne17(,e+)f17 + + + + + +reaction_Ne-17(,ν)e+,F-17 + + + + +Ne-17->reaction_Ne-17(,ν)e+,F-17 + + + + + +reaction_Ne-17(e-,ν)F-17 + + + + +Ne-17->reaction_Ne-17(e-,ν)F-17 + + + + + +reaction_Ne-17(,ν|)e-,Na-17 + + + + +Ne-17->reaction_Ne-17(,ν|)e-,Na-17 + + + + + +reaction_Ne-17(e+,ν|)Na-17 + + + + +Ne-17->reaction_Ne-17(e+,ν|)Na-17 + + + + + +Ne-18 + +Ne-18 + + + +Ne-18->reaction_ne18(a,p)na21 + + + + + +Ne-18->reaction_ne18(a,g)mg22 + + + + + +reaction_ne18(n,g)ne19 + + + + +Ne-18->reaction_ne18(n,g)ne19 + + + + + +Ne-18->reaction_ne18(p,)na19 + + + + + +reaction_ne18(,e+)f18 + + + + +Ne-18->reaction_ne18(,e+)f18 + + + + + +reaction_Ne-18(,ν)e+,F-18 + + + + +Ne-18->reaction_Ne-18(,ν)e+,F-18 + + + + + +reaction_Ne-18(e-,ν)F-18 + + + + +Ne-18->reaction_Ne-18(e-,ν)F-18 + + + + + +reaction_Ne-18(,ν|)e-,Na-18 + + + + +Ne-18->reaction_Ne-18(,ν|)e-,Na-18 + + + + + +reaction_Ne-18(e+,ν|)Na-18 + + + + +Ne-18->reaction_Ne-18(e+,ν|)Na-18 + + + + + +Ne-19 + +Ne-19 + + + +Ne-19->reaction_ne19(p,g)na20 + + + + + +reaction_ne19(n,g)ne20 + + + + +Ne-19->reaction_ne19(n,g)ne20 + + + + + +Ne-19->reaction_ne19(a,g)mg23 + + + + + +Ne-19->reaction_ne19(a,p)na22 + + + + + +reaction_ne19(,e+)f19 + + + + +Ne-19->reaction_ne19(,e+)f19 + + + + + +reaction_Ne-19(,ν)e+,F-19 + + + + +Ne-19->reaction_Ne-19(,ν)e+,F-19 + + + + + +reaction_Ne-19(e-,ν)F-19 + + + + +Ne-19->reaction_Ne-19(e-,ν)F-19 + + + + + +reaction_Ne-19(,ν|)e-,Na-19 + + + + +Ne-19->reaction_Ne-19(,ν|)e-,Na-19 + + + + + +reaction_Ne-19(e+,ν|)Na-19 + + + + +Ne-19->reaction_Ne-19(e+,ν|)Na-19 + + + + + +Ne-20 + +Ne-20 + + + +Ne-20->reaction_ne20(c12,a)si28 + + + + + +Ne-20->reaction_ne20(c12,p)p31 + + + + + +Ne-20->reaction_ne20(c12,n)s31 + + + + + +Ne-20->reaction_ne20(a,g)mg24 + + + + + +Ne-20->reaction_ne20(p,g)na21 + + + + + +reaction_ne20(n,g)ne21 + + + + +Ne-20->reaction_ne20(n,g)ne21 + + + + + +reaction_Ne-20(,ν)e+,F-20 + + + + +Ne-20->reaction_Ne-20(,ν)e+,F-20 + + + + + +reaction_Ne-20(e-,ν)F-20 + + + + +Ne-20->reaction_Ne-20(e-,ν)F-20 + + + + + +reaction_Ne-20(,ν|)e-,Na-20 + + + + +Ne-20->reaction_Ne-20(,ν|)e-,Na-20 + + + + + +reaction_Ne-20(e+,ν|)Na-20 + + + + +Ne-20->reaction_Ne-20(e+,ν|)Na-20 + + + + + +Ne-21 + +Ne-21 + + + +Ne-21->reaction_ne21(p,g)na22 + + + + + +reaction_ne21(n,g)ne22 + + + + +Ne-21->reaction_ne21(n,g)ne22 + + + + + +Ne-21->reaction_ne21(a,n)mg24 + + + + + +Ne-21->reaction_ne21(a,g)mg25 + + + + + +reaction_Ne-21(,ν)e+,F-21 + + + + +Ne-21->reaction_Ne-21(,ν)e+,F-21 + + + + + +reaction_Ne-21(e-,ν)F-21 + + + + +Ne-21->reaction_Ne-21(e-,ν)F-21 + + + + + +reaction_Ne-21(,ν|)e-,Na-21 + + + + +Ne-21->reaction_Ne-21(,ν|)e-,Na-21 + + + + + +reaction_Ne-21(e+,ν|)Na-21 + + + + +Ne-21->reaction_Ne-21(e+,ν|)Na-21 + + + + + +Ne-22 + +Ne-22 + + + +Ne-23 + +Ne-23 + + + +Ne-23->reaction_ne23(a,n)mg26 + + + + + +Ne-23->reaction_ne23(p,n)na23 + + + + + +reaction_ne23(n,g)ne24 + + + + +Ne-23->reaction_ne23(n,g)ne24 + + + + + +Ne-23->reaction_ne23(p,g)na24 + + + + + +Ne-23->reaction_ne23(a,g)mg27 + + + + + +reaction_ne23(e-,)na23 + + + + +Ne-23->reaction_ne23(e-,)na23 + + + + + +reaction_Ne-23(,ν)e+,F-23 + + + + +Ne-23->reaction_Ne-23(,ν)e+,F-23 + + + + + +reaction_Ne-23(e-,ν)F-23 + + + + +Ne-23->reaction_Ne-23(e-,ν)F-23 + + + + + +reaction_Ne-23(,ν|)e-,Na-23 + + + + +Ne-23->reaction_Ne-23(,ν|)e-,Na-23 + + + + + +reaction_Ne-23(e+,ν|)Na-23 + + + + +Ne-23->reaction_Ne-23(e+,ν|)Na-23 + + + + + +Ne-24 + +Ne-24 + + + +Ne-24->reaction_ne24(a,n)mg27 + + + + + +Ne-24->reaction_ne24(p,n)na24 + + + + + +Ne-24->reaction_ne24(a,g)mg28 + + + + + +reaction_ne24(n,g)ne25 + + + + +Ne-24->reaction_ne24(n,g)ne25 + + + + + +Ne-24->reaction_ne24(p,g)na25 + + + + + +reaction_ne24(e-,)na24 + + + + +Ne-24->reaction_ne24(e-,)na24 + + + + + +reaction_Ne-24(,ν)e+,F-24 + + + + +Ne-24->reaction_Ne-24(,ν)e+,F-24 + + + + + +reaction_Ne-24(e-,ν)F-24 + + + + +Ne-24->reaction_Ne-24(e-,ν)F-24 + + + + + +reaction_Ne-24(,ν|)e-,Na-24 + + + + +Ne-24->reaction_Ne-24(,ν|)e-,Na-24 + + + + + +reaction_Ne-24(e+,ν|)Na-24 + + + + +Ne-24->reaction_Ne-24(e+,ν|)Na-24 + + + + + +Ne-25 + +Ne-25 + + + +O-12 + +O-12 + + + +reaction_o12(n,g)o13 + + + + +O-12->reaction_o12(n,g)o13 + + + + + +reaction_O-12(,ν)e+,N-12 + + + + +O-12->reaction_O-12(,ν)e+,N-12 + + + + + +reaction_O-12(e-,ν)N-12 + + + + +O-12->reaction_O-12(e-,ν)N-12 + + + + + +O-13 + +O-13 + + + +O-13->reaction_o13(a,2p)o15 + + + + + +O-13->reaction_o13(a,p)f16 + + + + + +reaction_o13(n,g)o14 + + + + +O-13->reaction_o13(n,g)o14 + + + + + +reaction_o13(,e+)n13 + + + + +O-13->reaction_o13(,e+)n13 + + + + + +reaction_o13(,e+ p)c12 + + + + +O-13->reaction_o13(,e+ p)c12 + + + + + +reaction_O-13(,ν)e+,N-13 + + + + +O-13->reaction_O-13(,ν)e+,N-13 + + + + + +reaction_O-13(e-,ν)N-13 + + + + +O-13->reaction_O-13(e-,ν)N-13 + + + + + +reaction_O-13(,ν|)e-,F-13 + + + + +O-13->reaction_O-13(,ν|)e-,F-13 + + + + + +reaction_O-13(e+,ν|)F-13 + + + + +O-13->reaction_O-13(e+,ν|)F-13 + + + + + +O-14 + +O-14 + + + +O-14->reaction_o14(a,p)f17 + + + + + +reaction_o14(n,g)o15 + + + + +O-14->reaction_o14(n,g)o15 + + + + + +O-14->reaction_o14(a,g)ne18 + + + + + +reaction_o14(,e+)n14 + + + + +O-14->reaction_o14(,e+)n14 + + + + + +O-14->reaction_o14(p,)f15 + + + + + +reaction_O-14(,ν)e+,N-14 + + + + +O-14->reaction_O-14(,ν)e+,N-14 + + + + + +reaction_O-14(e-,ν)N-14 + + + + +O-14->reaction_O-14(e-,ν)N-14 + + + + + +reaction_O-14(,ν|)e-,F-14 + + + + +O-14->reaction_O-14(,ν|)e-,F-14 + + + + + +reaction_O-14(e+,ν|)F-14 + + + + +O-14->reaction_O-14(e+,ν|)F-14 + + + + + +O-15 + +O-15 + + + +O-15->reaction_o15(a,g)ne19 + + + + + +O-15->reaction_o15(p,)f16 + + + + + +reaction_o15(n,g)o16 + + + + +O-15->reaction_o15(n,g)o16 + + + + + +reaction_o15(,e+)n15 + + + + +O-15->reaction_o15(,e+)n15 + + + + + +reaction_O-15(,ν)e+,N-15 + + + + +O-15->reaction_O-15(,ν)e+,N-15 + + + + + +reaction_O-15(e-,ν)N-15 + + + + +O-15->reaction_O-15(e-,ν)N-15 + + + + + +reaction_O-15(,ν|)e-,F-15 + + + + +O-15->reaction_O-15(,ν|)e-,F-15 + + + + + +reaction_O-15(e+,ν|)F-15 + + + + +O-15->reaction_O-15(e+,ν|)F-15 + + + + + +O-16 + +O-16 + + + +reaction_o16(o16,p)p31 + + + + +O-16->reaction_o16(o16,p)p31 + + + + + +O-16->reaction_o16(o16,p)p31 + + + + + +reaction_o16(o16,n)s31 + + + + +O-16->reaction_o16(o16,n)s31 + + + + + +O-16->reaction_o16(o16,n)s31 + + + + + +O-16->reaction_o16(c12,a)mg24 + + + + + +O-16->reaction_o16(c12,p)al27 + + + + + +O-16->reaction_o16(p,g)f17 + + + + + +reaction_o16(n,g)o17 + + + + +O-16->reaction_o16(n,g)o17 + + + + + +reaction_o16(o16,a)si28 + + + + +O-16->reaction_o16(o16,a)si28 + + + + + +O-16->reaction_o16(o16,a)si28 + + + + + +O-16->reaction_o16(a,g)ne20 + + + + + +reaction_O-16(,ν)e+,N-16 + + + + +O-16->reaction_O-16(,ν)e+,N-16 + + + + + +reaction_O-16(e-,ν)N-16 + + + + +O-16->reaction_O-16(e-,ν)N-16 + + + + + +reaction_O-16(,ν|)e-,F-16 + + + + +O-16->reaction_O-16(,ν|)e-,F-16 + + + + + +reaction_O-16(e+,ν|)F-16 + + + + +O-16->reaction_O-16(e+,ν|)F-16 + + + + + +O-17 + +O-17 + + + +reaction_o17(n,g)o18 + + + + +O-17->reaction_o17(n,g)o18 + + + + + +O-17->reaction_o17(a,n)ne20 + + + + + +O-17->reaction_o17(a,g)ne21 + + + + + +O-17->reaction_o17(p,g)f18 + + + + + +reaction_O-17(,ν)e+,N-17 + + + + +O-17->reaction_O-17(,ν)e+,N-17 + + + + + +reaction_O-17(e-,ν)N-17 + + + + +O-17->reaction_O-17(e-,ν)N-17 + + + + + +reaction_O-17(,ν|)e-,F-17 + + + + +O-17->reaction_O-17(,ν|)e-,F-17 + + + + + +reaction_O-17(e+,ν|)F-17 + + + + +O-17->reaction_O-17(e+,ν|)F-17 + + + + + +O-18 + +O-18 + + + +O-18->reaction_o18(a,n)ne21 + + + + + +O-18->reaction_o18(p,g)f19 + + + + + +reaction_o18(n,g)o19 + + + + +O-18->reaction_o18(n,g)o19 + + + + + +O-18->reaction_o18(a,g)ne22 + + + + + +reaction_O-18(,ν)e+,N-18 + + + + +O-18->reaction_O-18(,ν)e+,N-18 + + + + + +reaction_O-18(e-,ν)N-18 + + + + +O-18->reaction_O-18(e-,ν)N-18 + + + + + +reaction_O-18(,ν|)e-,F-18 + + + + +O-18->reaction_O-18(,ν|)e-,F-18 + + + + + +reaction_O-18(e+,ν|)F-18 + + + + +O-18->reaction_O-18(e+,ν|)F-18 + + + + + +O-19 + +O-19 + + + +O-20 + +O-20 + + + +O-20->reaction_o20(p,n)f20 + + + + + +O-20->reaction_o20(a,n)ne23 + + + + + +reaction_o20(n,g)o21 + + + + +O-20->reaction_o20(n,g)o21 + + + + + +O-20->reaction_o20(a,g)ne24 + + + + + +reaction_o20(e-,)f20 + + + + +O-20->reaction_o20(e-,)f20 + + + + + +O-20->reaction_o20(p,g)f21 + + + + + +reaction_O-20(,ν)e+,N-20 + + + + +O-20->reaction_O-20(,ν)e+,N-20 + + + + + +reaction_O-20(e-,ν)N-20 + + + + +O-20->reaction_O-20(e-,ν)N-20 + + + + + +reaction_O-20(,ν|)e-,F-20 + + + + +O-20->reaction_O-20(,ν|)e-,F-20 + + + + + +reaction_O-20(e+,ν|)F-20 + + + + +O-20->reaction_O-20(e+,ν|)F-20 + + + + + +O-21 + +O-21 + + + +P-24 + +P-24 + + + +P-25 + +P-25 + + + +P-26 + +P-26 + + + +P-27 + +P-27 + + + +P-28 + +P-28 + + + +P-28->reaction_p28(a,g)cl32 + + + + + +P-28->reaction_p28(a,p)s31 + + + + + +reaction_p28(n,g)p29 + + + + +P-28->reaction_p28(n,g)p29 + + + + + +reaction_p28(,e+)si28 + + + + +P-28->reaction_p28(,e+)si28 + + + + + +P-28->reaction_p28(p,g)s29 + + + + + +reaction_p28(,e+ p)al27 + + + + +P-28->reaction_p28(,e+ p)al27 + + + + + +reaction_p28(,e+ a)mg24 + + + + +P-28->reaction_p28(,e+ a)mg24 + + + + + +reaction_P-28(,ν)e+,Si-28 + + + + +P-28->reaction_P-28(,ν)e+,Si-28 + + + + + +reaction_P-28(e-,ν)Si-28 + + + + +P-28->reaction_P-28(e-,ν)Si-28 + + + + + +reaction_P-28(,ν|)e-,S-28 + + + + +P-28->reaction_P-28(,ν|)e-,S-28 + + + + + +reaction_P-28(e+,ν|)S-28 + + + + +P-28->reaction_P-28(e+,ν|)S-28 + + + + + +P-29 + +P-29 + + + +P-29->reaction_p29(a,g)cl33 + + + + + +P-29->reaction_p29(p,g)s30 + + + + + +reaction_p29(n,g)p30 + + + + +P-29->reaction_p29(n,g)p30 + + + + + +P-29->reaction_p29(a,p)s32 + + + + + +reaction_p29(,e+)si29 + + + + +P-29->reaction_p29(,e+)si29 + + + + + +reaction_P-29(,ν)e+,Si-29 + + + + +P-29->reaction_P-29(,ν)e+,Si-29 + + + + + +reaction_P-29(e-,ν)Si-29 + + + + +P-29->reaction_P-29(e-,ν)Si-29 + + + + + +reaction_P-29(,ν|)e-,S-29 + + + + +P-29->reaction_P-29(,ν|)e-,S-29 + + + + + +reaction_P-29(e+,ν|)S-29 + + + + +P-29->reaction_P-29(e+,ν|)S-29 + + + + + +P-30 + +P-30 + + + +P-30->reaction_p30(a,p)s33 + + + + + +P-30->reaction_p30(a,g)cl34 + + + + + +P-30->reaction_p30(p,g)s31 + + + + + +reaction_p30(n,g)p31 + + + + +P-30->reaction_p30(n,g)p31 + + + + + +reaction_p30(,e+)si30 + + + + +P-30->reaction_p30(,e+)si30 + + + + + +reaction_P-30(,ν)e+,Si-30 + + + + +P-30->reaction_P-30(,ν)e+,Si-30 + + + + + +reaction_P-30(e-,ν)Si-30 + + + + +P-30->reaction_P-30(e-,ν)Si-30 + + + + + +reaction_P-30(,ν|)e-,S-30 + + + + +P-30->reaction_P-30(,ν|)e-,S-30 + + + + + +reaction_P-30(e+,ν|)S-30 + + + + +P-30->reaction_P-30(e+,ν|)S-30 + + + + + +P-31 + +P-31 + + + +P-31->reaction_p31(a,p)s34 + + + + + +P-31->reaction_p31(p,g)s32 + + + + + +P-31->reaction_p31(a,g)cl35 + + + + + +reaction_p31(n,g)p32 + + + + +P-31->reaction_p31(n,g)p32 + + + + + +reaction_P-31(,ν)e+,Si-31 + + + + +P-31->reaction_P-31(,ν)e+,Si-31 + + + + + +reaction_P-31(e-,ν)Si-31 + + + + +P-31->reaction_P-31(e-,ν)Si-31 + + + + + +reaction_P-31(,ν|)e-,S-31 + + + + +P-31->reaction_P-31(,ν|)e-,S-31 + + + + + +reaction_P-31(e+,ν|)S-31 + + + + +P-31->reaction_P-31(e+,ν|)S-31 + + + + + +P-32 + +P-32 + + + +P-32->reaction_p32(a,g)cl36 + + + + + +P-32->reaction_p32(p,g)s33 + + + + + +reaction_p32(n,g)p33 + + + + +P-32->reaction_p32(n,g)p33 + + + + + +P-32->reaction_p32(p,n)s32 + + + + + +reaction_p32(e-,)s32 + + + + +P-32->reaction_p32(e-,)s32 + + + + + +reaction_P-32(,ν)e+,Si-32 + + + + +P-32->reaction_P-32(,ν)e+,Si-32 + + + + + +reaction_P-32(e-,ν)Si-32 + + + + +P-32->reaction_P-32(e-,ν)Si-32 + + + + + +reaction_P-32(,ν|)e-,S-32 + + + + +P-32->reaction_P-32(,ν|)e-,S-32 + + + + + +reaction_P-32(e+,ν|)S-32 + + + + +P-32->reaction_P-32(e+,ν|)S-32 + + + + + +P-33 + +P-33 + + + +P-34 + +P-34 + + + +S-28 + +S-28 + + + +S-29 + +S-29 + + + +S-30 + +S-30 + + + +S-31 + +S-31 + + + +S-31->reaction_s31(a,p)cl34 + + + + + +S-31->reaction_s31(p,g)cl32 + + + + + +reaction_s31(n,g)s32 + + + + +S-31->reaction_s31(n,g)s32 + + + + + +reaction_s31(,e+)p31 + + + + +S-31->reaction_s31(,e+)p31 + + + + + +S-31->reaction_s31(a,g)ar35 + + + + + +reaction_S-31(,ν)e+,P-31 + + + + +S-31->reaction_S-31(,ν)e+,P-31 + + + + + +reaction_S-31(e-,ν)P-31 + + + + +S-31->reaction_S-31(e-,ν)P-31 + + + + + +reaction_S-31(,ν|)e-,Cl-31 + + + + +S-31->reaction_S-31(,ν|)e-,Cl-31 + + + + + +reaction_S-31(e+,ν|)Cl-31 + + + + +S-31->reaction_S-31(e+,ν|)Cl-31 + + + + + +S-32 + +S-32 + + + +S-32->reaction_s32(a,g)ar36 + + + + + +S-32->reaction_s32(p,g)cl33 + + + + + +reaction_s32(n,g)s33 + + + + +S-32->reaction_s32(n,g)s33 + + + + + +reaction_S-32(,ν)e+,P-32 + + + + +S-32->reaction_S-32(,ν)e+,P-32 + + + + + +reaction_S-32(e-,ν)P-32 + + + + +S-32->reaction_S-32(e-,ν)P-32 + + + + + +reaction_S-32(,ν|)e-,Cl-32 + + + + +S-32->reaction_S-32(,ν|)e-,Cl-32 + + + + + +reaction_S-32(e+,ν|)Cl-32 + + + + +S-32->reaction_S-32(e+,ν|)Cl-32 + + + + + +S-33 + +S-33 + + + +S-34 + +S-34 + + + +S-34->reaction_s34(a,p)cl37 + + + + + +S-34->reaction_s34(a,g)ar38 + + + + + +S-34->reaction_s34(p,g)cl35 + + + + + +reaction_s34(n,g)s35 + + + + +S-34->reaction_s34(n,g)s35 + + + + + +S-34->reaction_s34(a,n)ar37 + + + + + +reaction_S-34(,ν)e+,P-34 + + + + +S-34->reaction_S-34(,ν)e+,P-34 + + + + + +reaction_S-34(e-,ν)P-34 + + + + +S-34->reaction_S-34(e-,ν)P-34 + + + + + +reaction_S-34(,ν|)e-,Cl-34 + + + + +S-34->reaction_S-34(,ν|)e-,Cl-34 + + + + + +reaction_S-34(e+,ν|)Cl-34 + + + + +S-34->reaction_S-34(e+,ν|)Cl-34 + + + + + +S-35 + +S-35 + + + +Si-24 + +Si-24 + + + +Si-24->reaction_si24(a,p)p27 + + + + + +Si-24->reaction_si24(a,g)s28 + + + + + +reaction_si24(n,g)si25 + + + + +Si-24->reaction_si24(n,g)si25 + + + + + +Si-24->reaction_si24(p,)p25 + + + + + +reaction_si24(,e+ p)mg23 + + + + +Si-24->reaction_si24(,e+ p)mg23 + + + + + +reaction_si24(,e+)al24 + + + + +Si-24->reaction_si24(,e+)al24 + + + + + +reaction_Si-24(,ν)e+,Al-24 + + + + +Si-24->reaction_Si-24(,ν)e+,Al-24 + + + + + +reaction_Si-24(e-,ν)Al-24 + + + + +Si-24->reaction_Si-24(e-,ν)Al-24 + + + + + +reaction_Si-24(,ν|)e-,P-24 + + + + +Si-24->reaction_Si-24(,ν|)e-,P-24 + + + + + +reaction_Si-24(e+,ν|)P-24 + + + + +Si-24->reaction_Si-24(e+,ν|)P-24 + + + + + +Si-25 + +Si-25 + + + +Si-25->reaction_si25(p,g)p26 + + + + + +Si-25->reaction_si25(a,g)s29 + + + + + +reaction_si25(,e+ p)mg24 + + + + +Si-25->reaction_si25(,e+ p)mg24 + + + + + +reaction_si25(,e+)al25 + + + + +Si-25->reaction_si25(,e+)al25 + + + + + +reaction_si25(n,g)si26 + + + + +Si-25->reaction_si25(n,g)si26 + + + + + +Si-25->reaction_si25(a,p)p28 + + + + + +reaction_Si-25(,ν)e+,Al-25 + + + + +Si-25->reaction_Si-25(,ν)e+,Al-25 + + + + + +reaction_Si-25(e-,ν)Al-25 + + + + +Si-25->reaction_Si-25(e-,ν)Al-25 + + + + + +reaction_Si-25(,ν|)e-,P-25 + + + + +Si-25->reaction_Si-25(,ν|)e-,P-25 + + + + + +reaction_Si-25(e+,ν|)P-25 + + + + +Si-25->reaction_Si-25(e+,ν|)P-25 + + + + + +Si-26 + +Si-26 + + + +Si-26->reaction_si26(a,p)p29 + + + + + +Si-26->reaction_si26(p,g)p27 + + + + + +reaction_si26(n,g)si27 + + + + +Si-26->reaction_si26(n,g)si27 + + + + + +Si-26->reaction_si26(a,g)s30 + + + + + +reaction_si26(,e+)al26 + + + + +Si-26->reaction_si26(,e+)al26 + + + + + +reaction_Si-26(,ν)e+,Al-26 + + + + +Si-26->reaction_Si-26(,ν)e+,Al-26 + + + + + +reaction_Si-26(e-,ν)Al-26 + + + + +Si-26->reaction_Si-26(e-,ν)Al-26 + + + + + +reaction_Si-26(,ν|)e-,P-26 + + + + +Si-26->reaction_Si-26(,ν|)e-,P-26 + + + + + +reaction_Si-26(e+,ν|)P-26 + + + + +Si-26->reaction_Si-26(e+,ν|)P-26 + + + + + +Si-27 + +Si-27 + + + +Si-27->reaction_si27(a,p)p30 + + + + + +Si-27->reaction_si27(a,g)s31 + + + + + +reaction_si27(n,g)si28 + + + + +Si-27->reaction_si27(n,g)si28 + + + + + +Si-27->reaction_si27(p,g)p28 + + + + + +reaction_si27(,e+)al27 + + + + +Si-27->reaction_si27(,e+)al27 + + + + + +reaction_Si-27(,ν)e+,Al-27 + + + + +Si-27->reaction_Si-27(,ν)e+,Al-27 + + + + + +reaction_Si-27(e-,ν)Al-27 + + + + +Si-27->reaction_Si-27(e-,ν)Al-27 + + + + + +reaction_Si-27(,ν|)e-,P-27 + + + + +Si-27->reaction_Si-27(,ν|)e-,P-27 + + + + + +reaction_Si-27(e+,ν|)P-27 + + + + +Si-27->reaction_Si-27(e+,ν|)P-27 + + + + + +Si-28 + +Si-28 + + + +Si-28->reaction_si28(p,g)p29 + + + + + +Si-28->reaction_si28(a,g)s32 + + + + + +reaction_si28(n,g)si29 + + + + +Si-28->reaction_si28(n,g)si29 + + + + + +reaction_Si-28(,ν)e+,Al-28 + + + + +Si-28->reaction_Si-28(,ν)e+,Al-28 + + + + + +reaction_Si-28(e-,ν)Al-28 + + + + +Si-28->reaction_Si-28(e-,ν)Al-28 + + + + + +reaction_Si-28(,ν|)e-,P-28 + + + + +Si-28->reaction_Si-28(,ν|)e-,P-28 + + + + + +reaction_Si-28(e+,ν|)P-28 + + + + +Si-28->reaction_Si-28(e+,ν|)P-28 + + + + + +Si-29 + +Si-29 + + + +Si-29->reaction_si29(a,g)s33 + + + + + +reaction_si29(n,g)si30 + + + + +Si-29->reaction_si29(n,g)si30 + + + + + +Si-29->reaction_si29(p,g)p30 + + + + + +reaction_Si-29(,ν)e+,Al-29 + + + + +Si-29->reaction_Si-29(,ν)e+,Al-29 + + + + + +reaction_Si-29(e-,ν)Al-29 + + + + +Si-29->reaction_Si-29(e-,ν)Al-29 + + + + + +reaction_Si-29(,ν|)e-,P-29 + + + + +Si-29->reaction_Si-29(,ν|)e-,P-29 + + + + + +reaction_Si-29(e+,ν|)P-29 + + + + +Si-29->reaction_Si-29(e+,ν|)P-29 + + + + + +Si-30 + +Si-30 + + + +Si-30->reaction_si30(a,g)s34 + + + + + +Si-30->reaction_si30(p,g)p31 + + + + + +reaction_si30(n,g)si31 + + + + +Si-30->reaction_si30(n,g)si31 + + + + + +reaction_Si-30(,ν)e+,Al-30 + + + + +Si-30->reaction_Si-30(,ν)e+,Al-30 + + + + + +reaction_Si-30(e-,ν)Al-30 + + + + +Si-30->reaction_Si-30(e-,ν)Al-30 + + + + + +reaction_Si-30(,ν|)e-,P-30 + + + + +Si-30->reaction_Si-30(,ν|)e-,P-30 + + + + + +reaction_Si-30(e+,ν|)P-30 + + + + +Si-30->reaction_Si-30(e+,ν|)P-30 + + + + + +Si-31 + +Si-31 + + + +Si-31->reaction_si31(p,n)p31 + + + + + +Si-31->reaction_si31(p,g)p32 + + + + + +Si-31->reaction_si31(a,g)s35 + + + + + +Si-31->reaction_si31(a,n)s34 + + + + + +reaction_si31(n,g)si32 + + + + +Si-31->reaction_si31(n,g)si32 + + + + + +reaction_si31(e-,)p31 + + + + +Si-31->reaction_si31(e-,)p31 + + + + + +reaction_Si-31(,ν)e+,Al-31 + + + + +Si-31->reaction_Si-31(,ν)e+,Al-31 + + + + + +reaction_Si-31(e-,ν)Al-31 + + + + +Si-31->reaction_Si-31(e-,ν)Al-31 + + + + + +reaction_Si-31(,ν|)e-,P-31 + + + + +Si-31->reaction_Si-31(,ν|)e-,P-31 + + + + + +reaction_Si-31(e+,ν|)P-31 + + + + +Si-31->reaction_Si-31(e+,ν|)P-31 + + + + + +Si-32 + +Si-32 + + + +n-1 + +n-1 + + + +n-1->reaction_n(2p,p g)d + + + + + +n-1->reaction_c11(n,2a)he4 + + + + + +n-1->reaction_cl32(n,g)cl33 + + + + + +n-1->reaction_o12(n,g)o13 + + + + + +n-1->reaction_ar35(n,g)ar36 + + + + + +n-1->reaction_cl35(n,g)cl36 + + + + + +n-1->reaction_cl31(n,g)cl32 + + + + + +n-1->reaction_s34(n,g)s35 + + + + + +n-1->reaction_p32(n,g)p33 + + + + + +n-1->reaction_p29(n,g)p30 + + + + + +n-1->reaction_si29(n,g)si30 + + + + + +n-1->reaction_si26(n,g)si27 + + + + + +n-1->reaction_si24(n,g)si25 + + + + + +n-1->reaction_al26(n,g)al27 + + + + + +n-1->reaction_al24(n,g)al25 + + + + + +n-1->reaction_mg24(n,g)mg25 + + + + + +n-1->reaction_mg23(n,g)mg24 + + + + + +n-1->reaction_mg22(n,g)mg23 + + + + + +n-1->reaction_mg21(n,g)mg22 + + + + + +n-1->reaction_mg20(n,g)mg21 + + + + + +n-1->reaction_f15(n,g)f16 + + + + + +n-1->reaction_na24(n,g)na25 + + + + + +n-1->reaction_na23(n,g)na24 + + + + + +n-1->reaction_na22(n,g)na23 + + + + + +n-1->reaction_na21(n,g)na22 + + + + + +n-1->reaction_na20(n,g)na21 + + + + + +n-1->reaction_ne24(n,g)ne25 + + + + + +n-1->reaction_ne23(n,g)ne24 + + + + + +n-1->reaction_ne20(n,g)ne21 + + + + + +n-1->reaction_ne19(n,g)ne20 + + + + + +n-1->reaction_ne18(n,g)ne19 + + + + + +n-1->reaction_ne17(n,g)ne18 + + + + + +n-1->reaction_f21(n,g)f22 + + + + + +n-1->reaction_f18(n,g)f19 + + + + + +n-1->reaction_f16(n,g)f17 + + + + + +n-1->reaction_f14(n,g)f15 + + + + + +n-1->reaction_o17(n,g)o18 + + + + + +n-1->reaction_o16(n,g)o17 + + + + + +n-1->reaction_o14(n,g)o15 + + + + + +n-1->reaction_n17(n,g)n18 + + + + + +n-1->reaction_n16(n,g)n17 + + + + + +n-1->reaction_c12(n,g)c13 + + + + + +n-1->reaction_c11(n,g)c12 + + + + + +n-1->reaction_b13(n,g)b14 + + + + + +n-1->reaction_b12(n,g)b13 + + + + + +n-1->reaction_li7(n,g)li8 + + + + + +n-1->reaction_li6(n,g)li7 + + + + + +n-1->reaction_he3(n,g)he4 + + + + + +n-1->reaction_d(n,g)t + + + + + +n-1->reaction_s32(n,g)s33 + + + + + +n-1->reaction_c13(n,g)c14 + + + + + +n-1->reaction_o15(n,g)o16 + + + + + +n-1->reaction_s31(n,g)s32 + + + + + +n-1->reaction_n15(n,g)n16 + + + + + +n-1->reaction_o20(n,g)o21 + + + + + +n-1->reaction_p28(n,g)p29 + + + + + +n-1->reaction_al25(n,g)al26 + + + + + +n-1->reaction_o13(n,g)o14 + + + + + +n-1->reaction_cl34(n,g)cl35 + + + + + +n-1->reaction_n(p,g)d + + + + + +n-1->reaction_si31(n,g)si32 + + + + + +n-1->reaction_mg26(n,g)mg27 + + + + + +n-1->reaction_si27(n,g)si28 + + + + + +n-1->reaction_c14(n,g)c15 + + + + + +n-1->reaction_f20(n,g)f21 + + + + + +n-1->reaction_si28(n,g)si29 + + + + + +n-1->reaction_ne16(n,g)ne17 + + + + + +n-1->reaction_f17(n,g)f18 + + + + + +n-1->reaction_c16(n,g)c17 + + + + + +n-1->reaction_n14(n,g)n15 + + + + + +n-1->reaction_al28(n,g)al29 + + + + + +n-1->reaction_al27(n,g)al28 + + + + + +n-1->reaction_o18(n,g)o19 + + + + + +n-1->reaction_f19(n,g)f20 + + + + + +n-1->reaction_ne21(n,g)ne22 + + + + + +n-1->reaction_c15(n,g)c16 + + + + + +n-1->reaction_si25(n,g)si26 + + + + + +n-1->reaction_mg27(n,g)mg28 + + + + + +n-1->reaction_mg25(n,g)mg26 + + + + + +n-1->reaction_p30(n,g)p31 + + + + + +n-1->reaction_n13(n,g)n14 + + + + + +n-1->reaction_p31(n,g)p32 + + + + + +n-1->reaction_b8(n,p a)he4 + + + + + +n-1->reaction_si30(n,g)si31 + + + + + +n-1->reaction_na25(n,g)na26 + + + + + +reaction_n(2p,p g)d->H-1 + + +2.225 MeV + + + +reaction_n(2p,p g)d->H-2 + + +2.225 MeV + + + +reaction_be7(he3,2p a)he4->H-1 + + +11.2721 MeV + + + +reaction_be7(he3,2p a)he4->H-1 + + +11.2721 MeV + + + +reaction_be7(he3,2p a)he4->He-4 + + +11.2721 MeV + + + +reaction_be7(he3,2p a)he4->He-4 + + +11.2721 MeV + + + +reaction_be7(t,p n a)he4->H-1 + + +10.5088 MeV + + + +reaction_be7(t,p n a)he4->He-4 + + +10.5088 MeV + + + +reaction_be7(t,p n a)he4->He-4 + + +10.5088 MeV + + + +reaction_be7(t,p n a)he4->n-1 + + +10.5088 MeV + + + +reaction_li7(t,2n a)he4->He-4 + + +8.86442 MeV + + + +reaction_li7(t,2n a)he4->He-4 + + +8.86442 MeV + + + +reaction_li7(t,2n a)he4->n-1 + + +8.86442 MeV + + + +reaction_li7(t,2n a)he4->n-1 + + +8.86442 MeV + + + +reaction_o13(a,2p)o15->H-1 + + +8.1019 MeV + + + +reaction_o13(a,2p)o15->H-1 + + +8.1019 MeV + + + +reaction_o13(a,2p)o15->O-15 + + +8.1019 MeV + + + +reaction_li7(d,n a)he4->He-4 + + +15.121 MeV + + + +reaction_li7(d,n a)he4->He-4 + + +15.121 MeV + + + +reaction_li7(d,n a)he4->n-1 + + +15.121 MeV + + + +reaction_t(he3,p n)he4->H-1 + + +12.096 MeV + + + +reaction_t(he3,p n)he4->He-4 + + +12.096 MeV + + + +reaction_t(he3,p n)he4->n-1 + + +12.096 MeV + + + +reaction_t(t,2n)he4->He-4 + + +11.332 MeV + + + +reaction_t(t,2n)he4->n-1 + + +11.332 MeV + + + +reaction_t(t,2n)he4->n-1 + + +11.332 MeV + + + +reaction_cl35(a,p)ar38->Ar-38 + + +0.836956 MeV + + + +reaction_cl35(a,p)ar38->H-1 + + +0.836956 MeV + + + +reaction_cl34(a,p)ar37->Ar-37 + + +1.64383 MeV + + + +reaction_cl34(a,p)ar37->H-1 + + +1.64383 MeV + + + +reaction_cl31(a,p)ar34->Ar-34 + + +6.446 MeV + + + +reaction_cl31(a,p)ar34->H-1 + + +6.446 MeV + + + +reaction_s34(a,p)cl37->Cl-37 + + +-3.034 MeV + + + +reaction_s34(a,p)cl37->H-1 + + +-3.034 MeV + + + +reaction_s31(a,p)cl34->Cl-34 + + +0.531073 MeV + + + +reaction_s31(a,p)cl34->H-1 + + +0.531073 MeV + + + +reaction_p31(a,p)s34->H-1 + + +0.626848 MeV + + + +reaction_p31(a,p)s34->S-34 + + +0.626848 MeV + + + +reaction_p30(a,p)s33->H-1 + + +1.52136 MeV + + + +reaction_p30(a,p)s33->S-33 + + +1.52136 MeV + + + +reaction_c11(n,2a)he4->He-4 + + +11.4466 MeV + + + +reaction_c11(n,2a)he4->He-4 + + +11.4466 MeV + + + +reaction_c11(n,2a)he4->He-4 + + +11.4466 MeV + + + +reaction_si31(p,n)p31->P-31 + + +0.709 MeV + + + +reaction_si31(p,n)p31->n-1 + + +0.709 MeV + + + +reaction_si26(a,p)p29->H-1 + + +4.94394 MeV + + + +reaction_si26(a,p)p29->P-29 + + +4.94394 MeV + + + +reaction_si24(a,p)p27->H-1 + + +6.60765 MeV + + + +reaction_si24(a,p)p27->P-27 + + +6.60765 MeV + + + +reaction_si27(a,p)p30->H-1 + + +2.95222 MeV + + + +reaction_si27(a,p)p30->P-30 + + +2.95222 MeV + + + +reaction_al28(p,n)si28->Si-28 + + +3.86 MeV + + + +reaction_al28(p,n)si28->n-1 + + +3.86 MeV + + + +reaction_al27(a,p)si30->H-1 + + +2.37222 MeV + + + +reaction_al27(a,p)si30->Si-30 + + +2.37222 MeV + + + +reaction_al27(a,n)p30->P-30 + + +-2.643 MeV + + + +reaction_al27(a,n)p30->n-1 + + +-2.643 MeV + + + +reaction_al24(a,p)si27->H-1 + + +7.4633 MeV + + + +reaction_al24(a,p)si27->Si-27 + + +7.4633 MeV + + + +reaction_mg27(a,n)si30->Si-30 + + +4.2 MeV + + + +reaction_mg27(a,n)si30->n-1 + + +4.2 MeV + + + +reaction_mg26(a,n)si29->Si-29 + + +0.034 MeV + + + +reaction_mg26(a,n)si29->n-1 + + +0.034 MeV + + + +reaction_mg25(a,n)si28->Si-28 + + +2.654 MeV + + + +reaction_mg25(a,n)si28->n-1 + + +2.654 MeV + + + +reaction_mg22(a,p)al25->Al-25 + + +3.65515 MeV + + + +reaction_mg22(a,p)al25->H-1 + + +3.65515 MeV + + + +reaction_mg21(a,p)al24->Al-24 + + +6.1034 MeV + + + +reaction_mg21(a,p)al24->H-1 + + +6.1034 MeV + + + +reaction_mg20(a,p)al23->Al-23 + + +5.93672 MeV + + + +reaction_mg20(a,p)al23->H-1 + + +5.93672 MeV + + + +reaction_na25(a,n)al28->Al-28 + + +1.847 MeV + + + +reaction_na25(a,n)al28->n-1 + + +1.847 MeV + + + +reaction_na24(a,p)mg27->H-1 + + +1.305 MeV + + + +reaction_na24(a,p)mg27->Mg-27 + + +1.305 MeV + + + +reaction_na24(a,n)al27->Al-27 + + +3.133 MeV + + + +reaction_na24(a,n)al27->n-1 + + +3.133 MeV + + + +reaction_na24(p,n)mg24->Mg-24 + + +4.733 MeV + + + +reaction_na24(p,n)mg24->n-1 + + +4.733 MeV + + + +reaction_na22(a,p)mg25->H-1 + + +3.14634 MeV + + + +reaction_na22(a,p)mg25->Mg-25 + + +3.14634 MeV + + + +reaction_na20(a,p)mg23->H-1 + + +7.45743 MeV + + + +reaction_na20(a,p)mg23->Mg-23 + + +7.45743 MeV + + + +reaction_al25(a,p)si28->H-1 + + +7.71257 MeV + + + +reaction_al25(a,p)si28->Si-28 + + +7.71257 MeV + + + +reaction_ne24(a,n)mg27->Mg-27 + + +2.992 MeV + + + +reaction_ne24(a,n)mg27->n-1 + + +2.992 MeV + + + +reaction_ne24(p,n)na24->Na-24 + + +1.688 MeV + + + +reaction_ne24(p,n)na24->n-1 + + +1.688 MeV + + + +reaction_ne23(a,n)mg26->Mg-26 + + +5.415 MeV + + + +reaction_ne23(a,n)mg26->n-1 + + +5.415 MeV + + + +reaction_ne23(p,n)na23->Na-23 + + +3.594 MeV + + + +reaction_ne23(p,n)na23->n-1 + + +3.594 MeV + + + +reaction_ar35(a,p)k38->H-1 + + +0.889225 MeV + + + +reaction_ar35(a,p)k38->K-38 + + +0.889225 MeV + + + +reaction_ne20(c12,a)si28->He-4 + + +12.0211 MeV + + + +reaction_ne20(c12,a)si28->Si-28 + + +12.0211 MeV + + + +reaction_ne20(c12,p)p31->H-1 + + +10.104 MeV + + + +reaction_ne20(c12,p)p31->P-31 + + +10.104 MeV + + + +reaction_ne18(a,p)na21->H-1 + + +2.6373 MeV + + + +reaction_ne18(a,p)na21->Na-21 + + +2.6373 MeV + + + +reaction_ne16(a,p)na19->H-1 + + +6.2056 MeV + + + +reaction_ne16(a,p)na19->Na-19 + + +6.2056 MeV + + + +reaction_f21(a,p)ne24->H-1 + + +1.036 MeV + + + +reaction_f21(a,p)ne24->Ne-24 + + +1.036 MeV + + + +reaction_f20(a,p)ne23->H-1 + + +0.272 MeV + + + +reaction_f20(a,p)ne23->Ne-23 + + +0.272 MeV + + + +reaction_f19(p,n)ne19->Ne-19 + + +-4.021 MeV + + + +reaction_f19(p,n)ne19->n-1 + + +-4.021 MeV + + + +reaction_f18(a,p)ne21->H-1 + + +1.741 MeV + + + +reaction_f18(a,p)ne21->Ne-21 + + +1.741 MeV + + + +reaction_f15(a,p)ne18->H-1 + + +6.606 MeV + + + +reaction_f15(a,p)ne18->Ne-18 + + +6.606 MeV + + + +reaction_o20(p,n)f20->F-20 + + +3.032 MeV + + + +reaction_o20(p,n)f20->n-1 + + +3.032 MeV + + + +reaction_o18(a,n)ne21->Ne-21 + + +-0.697 MeV + + + +reaction_o18(a,n)ne21->n-1 + + +-0.697 MeV + + + +reaction_f19(a,p)ne22->H-1 + + +1.67327 MeV + + + +reaction_f19(a,p)ne22->Ne-22 + + +1.67327 MeV + + + +reaction_o16(o16,p)p31->H-1 + + +7.678 MeV + + + +reaction_o16(o16,p)p31->P-31 + + +7.678 MeV + + + +reaction_o16(o16,n)s31->S-31 + + +1.5 MeV + + + +reaction_o16(o16,n)s31->n-1 + + +1.5 MeV + + + +reaction_al28(a,n)p31->P-31 + + +1.943 MeV + + + +reaction_al28(a,n)p31->n-1 + + +1.943 MeV + + + +reaction_o16(c12,a)mg24->He-4 + + +6.771 MeV + + + +reaction_o16(c12,a)mg24->Mg-24 + + +6.771 MeV + + + +reaction_o16(c12,p)al27->Al-27 + + +5.171 MeV + + + +reaction_o16(c12,p)al27->H-1 + + +5.171 MeV + + + +reaction_o13(a,p)f16->F-16 + + +7.566 MeV + + + +reaction_o13(a,p)f16->H-1 + + +7.566 MeV + + + +reaction_n16(p,n)o16->O-16 + + +9.63666 MeV + + + +reaction_n16(p,n)o16->n-1 + + +9.63666 MeV + + + +reaction_n15(p,n)o15->O-15 + + +-3.536 MeV + + + +reaction_n15(p,n)o15->n-1 + + +-3.536 MeV + + + +reaction_n13(a,p)o16->H-1 + + +5.218 MeV + + + +reaction_n13(a,p)o16->O-16 + + +5.218 MeV + + + +reaction_n12(a,p)o15->H-1 + + +9.61789 MeV + + + +reaction_n12(a,p)o15->O-15 + + +9.61789 MeV + + + +reaction_c15(a,n)o18->O-18 + + +5.00855 MeV + + + +reaction_c15(a,n)o18->n-1 + + +5.00855 MeV + + + +reaction_c14(d,n)n15->N-15 + + +7.98263 MeV + + + +reaction_c14(d,n)n15->n-1 + + +7.98263 MeV + + + +reaction_c13(a,n)o16->O-16 + + +2.21561 MeV + + + +reaction_c13(a,n)o16->n-1 + + +2.21561 MeV + + + +reaction_c13(d,n)n14->N-14 + + +5.32663 MeV + + + +reaction_c13(d,n)n14->n-1 + + +5.32663 MeV + + + +reaction_c12(c12,a)ne20->He-4 + + +4.621 MeV + + + +reaction_c12(c12,a)ne20->Ne-20 + + +4.621 MeV + + + +reaction_c11(a,p)n14->H-1 + + +2.923 MeV + + + +reaction_c11(a,p)n14->N-14 + + +2.923 MeV + + + +reaction_b13(a,n)n16->N-16 + + +5.23355 MeV + + + +reaction_b13(a,n)n16->n-1 + + +5.23355 MeV + + + +reaction_li7(he3,p n a)he4->H-1 + + +9.62776 MeV + + + +reaction_li7(he3,p n a)he4->He-4 + + +9.62776 MeV + + + +reaction_li7(he3,p n a)he4->He-4 + + +9.62776 MeV + + + +reaction_li7(he3,p n a)he4->n-1 + + +9.62776 MeV + + + +reaction_b12(a,n)n15->N-15 + + +7.62155 MeV + + + +reaction_b12(a,n)n15->n-1 + + +7.62155 MeV + + + +reaction_b8(a,p)c11->C-11 + + +7.40589 MeV + + + +reaction_b8(a,p)c11->H-1 + + +7.40589 MeV + + + +reaction_li7(d,p)li8->H-1 + + +-0.19103 MeV + + + +reaction_li7(d,p)li8->Li-8 + + +-0.19103 MeV + + + +reaction_he3(d,p)he4->H-1 + + +18.353 MeV + + + +reaction_he3(d,p)he4->He-4 + + +18.353 MeV + + + +reaction_t(d,n)he4->He-4 + + +17.589 MeV + + + +reaction_t(d,n)he4->n-1 + + +17.589 MeV + + + +reaction_d(d,p)t->H-1 + + +4.033 MeV + + + +reaction_d(d,p)t->H-3 + + +4.033 MeV + + + +reaction_d(d,n)he3->He-3 + + +3.269 MeV + + + +reaction_d(d,n)he3->n-1 + + +3.269 MeV + + + +reaction_n14(p,n)o14->O-14 + + +-5.925 MeV + + + +reaction_n14(p,n)o14->n-1 + + +-5.925 MeV + + + +reaction_o14(a,p)f17->F-17 + + +1.192 MeV + + + +reaction_o14(a,p)f17->H-1 + + +1.192 MeV + + + +reaction_f16(a,p)ne19->H-1 + + +4.065 MeV + + + +reaction_f16(a,p)ne19->Ne-19 + + +4.065 MeV + + + +reaction_ne20(c12,n)s31->S-31 + + +3.92763 MeV + + + +reaction_ne20(c12,n)s31->n-1 + + +3.92763 MeV + + + +reaction_n13(,e+)c13->C-13 + + +2.22 MeV + + + +reaction_cl32(n,g)cl33->Cl-33 + + +15.745 MeV + + + +reaction_f20(p,n)ne20->Ne-20 + + +6.242 MeV + + + +reaction_f20(p,n)ne20->n-1 + + +6.242 MeV + + + +reaction_ne17(a,g)mg21->Mg-21 + + +7.97531 MeV + + + +reaction_ar35(a,g)ca39->Ca-39 + + +6.6519 MeV + + + +reaction_ar35(p,g)k36->K-36 + + +1.668 MeV + + + +reaction_si25(p,g)p26->P-26 + + +0.140289 MeV + + + +reaction_o12(n,g)o13->O-13 + + +17.008 MeV + + + +reaction_be7(,e+)li7->Li-7 + + +0.863 MeV + + + +reaction_ar35(n,g)ar36->Ar-36 + + +15.2554 MeV + + + +reaction_na20(,e+)ne20->Ne-20 + + +13.8919 MeV + + + +reaction_cl35(n,g)cl36->Cl-36 + + +8.58 MeV + + + +reaction_cl34(p,g)ar35->Ar-35 + + +5.89661 MeV + + + +reaction_cl32(a,g)k36->K-36 + + +6.52132 MeV + + + +reaction_cl31(a,g)k35->K-35 + + +6.52665 MeV + + + +reaction_cl31(n,g)cl32->Cl-32 + + +14.3339 MeV + + + +reaction_s34(a,g)ar38->Ar-38 + + +7.208 MeV + + + +reaction_s34(p,g)cl35->Cl-35 + + +6.37072 MeV + + + +reaction_s34(n,g)s35->S-35 + + +6.986 MeV + + + +reaction_s32(a,g)ar36->Ar-36 + + +6.64076 MeV + + + +reaction_s32(p,g)cl33->Cl-33 + + +2.2767 MeV + + + +reaction_s31(p,g)cl32->Cl-32 + + +1.574 MeV + + + +reaction_c14(e-,)n14->N-14 + + +0.1565 MeV + + + +reaction_f16(a,g)na20->Na-20 + + +6.26 MeV + + + +reaction_p32(a,g)cl36->Cl-36 + + +7.641 MeV + + + +reaction_p32(p,g)s33->S-33 + + +9.57 MeV + + + +reaction_p32(n,g)p33->P-33 + + +10.104 MeV + + + +reaction_p31(p,g)s32->S-32 + + +8.86378 MeV + + + +reaction_p30(a,g)cl34->Cl-34 + + +6.66412 MeV + + + +reaction_p30(p,g)s31->S-31 + + +6.13304 MeV + + + +reaction_p29(a,g)cl33->Cl-33 + + +6.47572 MeV + + + +reaction_p29(p,g)s30->S-30 + + +4.399 MeV + + + +reaction_p29(n,g)p30->P-30 + + +11.3193 MeV + + + +reaction_p28(a,g)cl32->Cl-32 + + +8.59593 MeV + + + +reaction_si31(p,g)p32->P-32 + + +8.645 MeV + + + +reaction_cl32(a,p)ar35->Ar-35 + + +4.85359 MeV + + + +reaction_cl32(a,p)ar35->H-1 + + +4.85359 MeV + + + +reaction_si29(a,g)s33->S-33 + + +7.11586 MeV + + + +reaction_si29(n,g)si30->Si-30 + + +10.609 MeV + + + +reaction_si28(p,g)p29->P-29 + + +2.7488 MeV + + + +reaction_si27(a,g)s31->S-31 + + +9.08526 MeV + + + +reaction_si26(p,g)p27->P-27 + + +0.861 MeV + + + +reaction_si26(n,g)si27->Si-27 + + +13.311 MeV + + + +reaction_si24(a,g)s28->S-28 + + +9.10639 MeV + + + +reaction_si24(n,g)si25->Si-25 + + +15.0017 MeV + + + +reaction_cl34(a,g)k38->K-38 + + +6.78583 MeV + + + +reaction_n14(a,n)f17->F-17 + + +-4.735 MeV + + + +reaction_n14(a,n)f17->n-1 + + +-4.735 MeV + + + +reaction_al28(a,g)p32->P-32 + + +9.879 MeV + + + +reaction_al27(a,g)p31->P-31 + + +9.66914 MeV + + + +reaction_al25(,e+)mg25->Mg-25 + + +4.276 MeV + + + +reaction_al26(a,g)p30->P-30 + + +10.4152 MeV + + + +reaction_al26(n,g)al27->Al-27 + + +13.058 MeV + + + +reaction_al25(a,g)p29->P-29 + + +10.4614 MeV + + + +reaction_al24(a,g)p28->P-28 + + +9.52672 MeV + + + +reaction_al24(n,g)al25->Al-25 + + +16.9305 MeV + + + +reaction_p32(p,n)s32->S-32 + + +0.928 MeV + + + +reaction_p32(p,n)s32->n-1 + + +0.928 MeV + + + +reaction_mg25(a,g)si29->Si-29 + + +11.127 MeV + + + +reaction_si30(a,g)s34->S-34 + + +7.92378 MeV + + + +reaction_mg25(p,g)al26->Al-26 + + +6.30645 MeV + + + +reaction_mg24(p,g)al25->Al-25 + + +2.2716 MeV + + + +reaction_mg24(n,g)mg25->Mg-25 + + +7.331 MeV + + + +reaction_mg23(n,g)mg24->Mg-24 + + +16.5311 MeV + + + +reaction_mg22(n,g)mg23->Mg-23 + + +13.1481 MeV + + + +reaction_mg21(a,g)si25->Si-25 + + +9.5111 MeV + + + +reaction_mg21(p,)al22->Al-22 + + +-0.892 MeV + + + +reaction_na25(a,p)mg28->H-1 + + +0.797 MeV + + + +reaction_na25(a,p)mg28->Mg-28 + + +0.797 MeV + + + +reaction_mg21(n,g)mg22->Mg-22 + + +19.3788 MeV + + + +reaction_mg20(a,g)si24->Si-24 + + +9.24059 MeV + + + +reaction_mg20(n,g)mg21->Mg-21 + + +14.7312 MeV + + + +reaction_al28(a,p)si31->H-1 + + +1.234 MeV + + + +reaction_al28(a,p)si31->Si-31 + + +1.234 MeV + + + +reaction_f15(n,g)f16->F-16 + + +14.168 MeV + + + +reaction_na25(p,g)mg26->Mg-26 + + +14.146 MeV + + + +reaction_na24(n,g)na25->Na-25 + + +9.011 MeV + + + +reaction_na23(a,g)al27->Al-27 + + +10.0917 MeV + + + +reaction_na23(p,g)mg24->Mg-24 + + +11.6927 MeV + + + +reaction_na23(n,g)na24->Na-24 + + +6.959 MeV + + + +reaction_na22(n,g)na23->Na-23 + + +12.4187 MeV + + + +reaction_al24(,e+ a)ne20->He-4 + + +4.569 MeV + + + +reaction_al24(,e+ a)ne20->Ne-20 + + +4.569 MeV + + + +reaction_na21(a,g)al25->Al-25 + + +9.15693 MeV + + + +reaction_na21(n,g)na22->Na-22 + + +11.0696 MeV + + + +reaction_na20(a,g)al24->Al-24 + + +9.32958 MeV + + + +reaction_na20(p,g)mg21->Mg-21 + + +3.22203 MeV + + + +reaction_na20(n,g)na21->Na-21 + + +17.1032 MeV + + + +reaction_mg20(,e+)na20->Na-20 + + +10.708 MeV + + + +reaction_s34(a,n)ar37->Ar-37 + + +-4.63 MeV + + + +reaction_s34(a,n)ar37->n-1 + + +-4.63 MeV + + + +reaction_ne24(a,g)mg28->Mg-28 + + +11.496 MeV + + + +reaction_ne24(n,g)ne25->Ne-25 + + +4.28137 MeV + + + +reaction_he4(he3,g)be7->Be-7 + + +1.5861 MeV + + + +reaction_ne23(n,g)ne24->Ne-24 + + +8.86637 MeV + + + +reaction_ne20(a,g)mg24->Mg-24 + + +9.31655 MeV + + + +reaction_ne20(p,g)na21->Na-21 + + +2.43169 MeV + + + +reaction_ne20(n,g)ne21->Ne-21 + + +6.761 MeV + + + +reaction_ne19(p,g)na20->Na-20 + + +2.193 MeV + + + +reaction_ne19(n,g)ne20->Ne-20 + + +16.8647 MeV + + + +reaction_ne18(a,g)mg22->Mg-22 + + +8.13905 MeV + + + +reaction_ne18(n,g)ne19->Ne-19 + + +11.637 MeV + + + +reaction_ne17(n,g)ne18->Ne-18 + + +19.2151 MeV + + + +reaction_f21(p,g)ne22->Ne-22 + + +15.266 MeV + + + +reaction_f21(n,g)f22->F-22 + + +5.19337 MeV + + + +reaction_f19(p,g)ne20->Ne-20 + + +12.843 MeV + + + +reaction_f18(n,g)f19->F-19 + + +10.432 MeV + + + +reaction_f17(a,g)na21->Na-21 + + +6.561 MeV + + + +reaction_f16(n,g)f17->F-17 + + +16.8 MeV + + + +reaction_f15(a,g)na19->Na-19 + + +6.273 MeV + + + +reaction_f14(n,g)f15->F-15 + + +24.902 MeV + + + +reaction_b13(a,g)n17->N-17 + + +11.1159 MeV + + + +reaction_p28(a,p)s31->H-1 + + +7.02184 MeV + + + +reaction_p28(a,p)s31->S-31 + + +7.02184 MeV + + + +reaction_o17(n,g)o18->O-18 + + +8.04437 MeV + + + +reaction_o16(p,g)f17->F-17 + + +0.60027 MeV + + + +reaction_o16(n,g)o17->O-17 + + +4.14337 MeV + + + +reaction_o15(a,g)ne19->Ne-19 + + +3.5291 MeV + + + +reaction_o15(p,)f16->F-16 + + +-0.536 MeV + + + +reaction_o14(n,g)o15->O-15 + + +13.222 MeV + + + +reaction_n17(n,g)n18->N-18 + + +2.82537 MeV + + + +reaction_n16(n,g)n17->N-17 + + +5.88237 MeV + + + +reaction_n15(a,g)f19->F-19 + + +4.01374 MeV + + + +reaction_n15(p,g)o16->O-16 + + +12.1274 MeV + + + +reaction_n14(a,g)f18->F-18 + + +4.4146 MeV + + + +reaction_n13(p,g)o14->O-14 + + +4.62797 MeV + + + +reaction_n12(p,g)o13->O-13 + + +1.51603 MeV + + + +reaction_c14(a,g)o18->O-18 + + +6.2263 MeV + + + +reaction_c14(p,g)n15->N-15 + + +10.2074 MeV + + + +reaction_c13(p,g)n14->N-14 + + +7.551 MeV + + + +reaction_c12(a,g)o16->O-16 + + +7.16192 MeV + + + +reaction_c12(p,g)n13->N-13 + + +1.943 MeV + + + +reaction_c12(n,g)c13->C-13 + + +4.94637 MeV + + + +reaction_c11(p,g)n12->N-12 + + +0.601418 MeV + + + +reaction_c11(n,g)c12->C-12 + + +18.7214 MeV + + + +reaction_b13(n,g)b14->B-14 + + +0.969369 MeV + + + +reaction_b12(n,g)b13->B-13 + + +4.87937 MeV + + + +reaction_b8(p,g)c9->C-9 + + +1.29633 MeV + + + +reaction_be7(p,g)b8->B-8 + + +0.137 MeV + + + +reaction_li7(n,g)li8->Li-8 + + +2.03337 MeV + + + +reaction_li6(a,g)b10->B-10 + + +4.46 MeV + + + +reaction_p31(a,g)cl35->Cl-35 + + +6.99757 MeV + + + +reaction_li6(p,g)be7->Be-7 + + +5.606 MeV + + + +reaction_li6(n,g)li7->Li-7 + + +7.25037 MeV + + + +reaction_he3(n,g)he4->He-4 + + +20.5774 MeV + + + +reaction_he4(t,g)li7->Li-7 + + +2.467 MeV + + + +reaction_ne24(p,g)na25->Na-25 + + +10.699 MeV + + + +reaction_t(p,g)he4->He-4 + + +19.814 MeV + + + +reaction_he4(d,g)li6->Li-6 + + +1.47385 MeV + + + +reaction_d(d,g)he4->He-4 + + +23.847 MeV + + + +reaction_d(p,g)he3->He-3 + + +5.493 MeV + + + +reaction_d(n,g)t->H-3 + + +6.25737 MeV + + + +reaction_p(p,e+)d->H-2 + + +1.44206 MeV + + + +reaction_na25(p,n)mg25->Mg-25 + + +3.053 MeV + + + +reaction_na25(p,n)mg25->n-1 + + +3.053 MeV + + + +reaction_si31(a,g)s35->S-35 + + +8.322 MeV + + + +reaction_s32(n,g)s33->S-33 + + +8.64161 MeV + + + +reaction_cl31(p,g)ar32->Ar-32 + + +2.42 MeV + + + +reaction_c13(n,g)c14->C-14 + + +8.17637 MeV + + + +reaction_o14(a,g)ne18->Ne-18 + + +5.114 MeV + + + +reaction_na25(a,g)al29->Al-29 + + +11.283 MeV + + + +reaction_b12(,e- 2a)he4->He-4 + + +6.0933 MeV + + + +reaction_b12(,e- 2a)he4->He-4 + + +6.0933 MeV + + + +reaction_b12(,e- 2a)he4->He-4 + + +6.0933 MeV + + + +reaction_o15(n,g)o16->O-16 + + +15.664 MeV + + + +reaction_ne17(a,p)na20->H-1 + + +4.74913 MeV + + + +reaction_ne17(a,p)na20->Na-20 + + +4.74913 MeV + + + +reaction_o20(a,n)ne23->Ne-23 + + +3.304 MeV + + + +reaction_o20(a,n)ne23->n-1 + + +3.304 MeV + + + +reaction_al28(p,g)si29->Si-29 + + +12.334 MeV + + + +reaction_s31(n,g)s32->S-32 + + +15.0424 MeV + + + +reaction_he3(,e+)t->H-3 + + +-0.019 MeV + + + +reaction_ne18(p,)na19->Na-19 + + +-0.32 MeV + + + +reaction_mg27(a,g)si31->Si-31 + + +10.787 MeV + + + +reaction_be7(a,g)c11->C-11 + + +7.544 MeV + + + +reaction_si24(p,)p25->P-25 + + +-0.828356 MeV + + + +reaction_mg23(p,g)al24->Al-24 + + +1.872 MeV + + + +reaction_ne19(a,g)mg23->Mg-23 + + +9.65012 MeV + + + +reaction_n15(n,g)n16->N-16 + + +2.49137 MeV + + + +reaction_c16(e-,)n16->N-16 + + +8.011 MeV + + + +reaction_o20(n,g)o21->O-21 + + +3.73737 MeV + + + +reaction_p29(a,p)s32->H-1 + + +4.19902 MeV + + + +reaction_p29(a,p)s32->S-32 + + +4.19902 MeV + + + +reaction_p28(n,g)p29->P-29 + + +17.8652 MeV + + + +reaction_al25(n,g)al26->Al-26 + + +11.3655 MeV + + + +reaction_c13(p,n)n13->N-13 + + +-3.003 MeV + + + +reaction_c13(p,n)n13->n-1 + + +-3.003 MeV + + + +reaction_n14(p,g)o15->O-15 + + +7.2968 MeV + + + +reaction_al24(p,g)si25->Si-25 + + +3.408 MeV + + + +reaction_si26(a,g)s30->S-30 + + +9.34282 MeV + + + +reaction_f18(p,g)ne19->Ne-19 + + +6.4112 MeV + + + +reaction_o13(n,g)o14->O-14 + + +23.176 MeV + + + +reaction_li6(d,p)li7->H-1 + + +5.02597 MeV + + + +reaction_li6(d,p)li7->Li-7 + + +5.02597 MeV + + + +reaction_c12(c12,p)na23->H-1 + + +2.242 MeV + + + +reaction_c12(c12,p)na23->Na-23 + + +2.242 MeV + + + +reaction_si25(a,g)s29->S-29 + + +9.40882 MeV + + + +reaction_o20(a,g)ne24->Ne-24 + + +12.169 MeV + + + +reaction_o18(p,g)f19->F-19 + + +7.9948 MeV + + + +reaction_cl31(,e+ p)p30->H-1 + + +5.845 MeV + + + +reaction_cl31(,e+ p)p30->P-30 + + +5.845 MeV + + + +reaction_p28(,e+)si28->Si-28 + + +14.3438 MeV + + + +reaction_f20(e-,)ne20->Ne-20 + + +7.0249 MeV + + + +reaction_ne16(a,g)mg20->Mg-20 + + +8.85103 MeV + + + +reaction_cl34(n,g)cl35->Cl-35 + + +12.6451 MeV + + + +reaction_mg22(p,g)al23->Al-23 + + +0.122 MeV + + + +reaction_na21(p,g)mg22->Mg-22 + + +5.50418 MeV + + + +reaction_b8(,e+ a)he4->He-4 + + +18.0712 MeV + + + +reaction_b8(,e+ a)he4->He-4 + + +18.0712 MeV + + + +reaction_n16(a,n)f19->F-19 + + +1.52255 MeV + + + +reaction_n16(a,n)f19->n-1 + + +1.52255 MeV + + + +reaction_o15(,e+)n15->N-15 + + +2.7536 MeV + + + +reaction_si30(p,g)p31->P-31 + + +7.29693 MeV + + + +reaction_o16(o16,a)si28->He-4 + + +9.593 MeV + + + +reaction_o16(o16,a)si28->Si-28 + + +9.593 MeV + + + +reaction_si31(a,n)s34->S-34 + + +1.336 MeV + + + +reaction_si31(a,n)s34->n-1 + + +1.336 MeV + + + +reaction_n(p,g)d->H-2 + + +2.22457 MeV + + + +reaction_cl35(p,g)ar36->Ar-36 + + +8.50697 MeV + + + +reaction_c16(,e- n)n15->N-15 + + +5.5213 MeV + + + +reaction_c16(,e- n)n15->n-1 + + +5.5213 MeV + + + +reaction_si31(n,g)si32->Si-32 + + +9.203 MeV + + + +reaction_o14(,e+)n14->N-14 + + +5.1436 MeV + + + +reaction_li7(t,n)be9->Be-9 + + +10.4376 MeV + + + +reaction_li7(t,n)be9->n-1 + + +10.4376 MeV + + + +reaction_li7(a,g)b11->B-11 + + +8.664 MeV + + + +reaction_o17(a,n)ne20->Ne-20 + + +0.586 MeV + + + +reaction_o17(a,n)ne20->n-1 + + +0.586 MeV + + + +reaction_mg26(n,g)mg27->Mg-27 + + +6.443 MeV + + + +reaction_f21(p,n)ne21->Ne-21 + + +4.902 MeV + + + +reaction_f21(p,n)ne21->n-1 + + +4.902 MeV + + + +reaction_na22(p,g)mg23->Mg-23 + + +7.5803 MeV + + + +reaction_al25(p,g)si26->Si-26 + + +5.51743 MeV + + + +reaction_si27(n,g)si28->Si-28 + + +17.1798 MeV + + + +reaction_ne21(p,g)na22->Na-22 + + +6.7396 MeV + + + +reaction_c15(e-,)n15->N-15 + + +9.7716 MeV + + + +reaction_c14(n,g)c15->C-15 + + +1.21837 MeV + + + +reaction_o17(a,g)ne21->Ne-21 + + +7.351 MeV + + + +reaction_f18(a,g)na22->Na-22 + + +8.48 MeV + + + +reaction_f21(a,g)na25->Na-25 + + +11.735 MeV + + + +reaction_si28(a,g)s32->S-32 + + +6.94782 MeV + + + +reaction_f20(n,g)f21->F-21 + + +8.102 MeV + + + +reaction_si28(n,g)si29->Si-29 + + +8.474 MeV + + + +reaction_p28(p,g)s29->S-29 + + +3.2898 MeV + + + +reaction_ne16(n,g)ne17->Ne-17 + + +15.6069 MeV + + + +reaction_n17(e-,)o17->O-17 + + +8.6788 MeV + + + +reaction_na23(p,n)mg23->Mg-23 + + +-4.839 MeV + + + +reaction_na23(p,n)mg23->n-1 + + +-4.839 MeV + + + +reaction_o20(e-,)f20->F-20 + + +3.813 MeV + + + +reaction_na21(,e+)ne21->Ne-21 + + +3.547 MeV + + + +reaction_na24(p,g)mg25->Mg-25 + + +12.064 MeV + + + +reaction_si27(p,g)p28->P-28 + + +2.063 MeV + + + +reaction_p28(,e+ p)al27->Al-27 + + +2.758 MeV + + + +reaction_p28(,e+ p)al27->H-1 + + +2.758 MeV + + + +reaction_b12(p,n)c12->C-12 + + +12.5877 MeV + + + +reaction_b12(p,n)c12->n-1 + + +12.5877 MeV + + + +reaction_f17(n,g)f18->F-18 + + +9.15 MeV + + + +reaction_c16(n,g)c17->C-17 + + +0.735369 MeV + + + +reaction_o14(p,)f15->F-15 + + +-1.481 MeV + + + +reaction_n14(n,g)n15->N-15 + + +10.8324 MeV + + + +reaction_f20(p,g)ne21->Ne-21 + + +13.003 MeV + + + +reaction_si25(,e+ p)mg24->H-1 + + +10.47 MeV + + + +reaction_si25(,e+ p)mg24->Mg-24 + + +10.47 MeV + + + +reaction_si27(,e+)al27->Al-27 + + +4.812 MeV + + + +reaction_mg21(,e+ p)ne20->H-1 + + +10.6649 MeV + + + +reaction_mg21(,e+ p)ne20->Ne-20 + + +10.6649 MeV + + + +reaction_si24(,e+ p)mg23->H-1 + + +8.938 MeV + + + +reaction_si24(,e+ p)mg23->Mg-23 + + +8.938 MeV + + + +reaction_mg24(a,g)si28->Si-28 + + +9.984 MeV + + + +reaction_cl32(p,g)ar33->Ar-33 + + +3.343 MeV + + + +reaction_na20(,e+ a)o16->He-4 + + +9.1621 MeV + + + +reaction_na20(,e+ a)o16->O-16 + + +9.1621 MeV + + + +reaction_al24(,e+ p)na23->H-1 + + +2.1929 MeV + + + +reaction_al24(,e+ p)na23->Na-23 + + +2.1929 MeV + + + +reaction_al28(n,g)al29->Al-29 + + +9.436 MeV + + + +reaction_si24(,e+)al24->Al-24 + + +10.802 MeV + + + +reaction_ar35(,e+)cl35->Cl-35 + + +5.966 MeV + + + +reaction_p29(,e+)si29->Si-29 + + +4.9431 MeV + + + +reaction_na24(e-,)mg24->Mg-24 + + +5.516 MeV + + + +reaction_al27(n,g)al28->Al-28 + + +7.725 MeV + + + +reaction_o18(n,g)o19->O-19 + + +3.95737 MeV + + + +reaction_f19(n,g)f20->F-20 + + +6.60137 MeV + + + +reaction_mg21(,e+ a)f17->F-17 + + +6.5361 MeV + + + +reaction_mg21(,e+ a)f17->He-4 + + +6.5361 MeV + + + +reaction_si31(e-,)p31->P-31 + + +1.4915 MeV + + + +reaction_mg20(,e+ p)ne19->H-1 + + +8.517 MeV + + + +reaction_mg20(,e+ p)ne19->Ne-19 + + +8.517 MeV + + + +reaction_b14(e-,)c14->C-14 + + +20.6431 MeV + + + +reaction_f21(e-,)ne21->Ne-21 + + +5.684 MeV + + + +reaction_mg26(a,g)si30->Si-30 + + +10.644 MeV + + + +reaction_na24(a,g)al28->Al-28 + + +10.858 MeV + + + +reaction_na22(a,g)al26->Al-26 + + +9.45279 MeV + + + +reaction_ne21(n,g)ne22->Ne-22 + + +10.364 MeV + + + +reaction_al26(a,p)si29->H-1 + + +4.82068 MeV + + + +reaction_al26(a,p)si29->Si-29 + + +4.82068 MeV + + + +reaction_ne19(a,p)na22->H-1 + + +2.06982 MeV + + + +reaction_ne19(a,p)na22->Na-22 + + +2.06982 MeV + + + +reaction_mg22(,e+)na22->Na-22 + + +4.782 MeV + + + +reaction_cl32(,e+)s32->S-32 + + +12.6805 MeV + + + +reaction_c15(n,g)c16->C-16 + + +4.25037 MeV + + + +reaction_si25(,e+)al25->Al-25 + + +12.742 MeV + + + +reaction_o13(,e+)n13->N-13 + + +17.769 MeV + + + +reaction_si25(n,g)si26->Si-26 + + +19.0403 MeV + + + +reaction_al26(,e+)mg26->Mg-26 + + +4.004 MeV + + + +reaction_f17(p,g)ne18->Ne-18 + + +3.92351 MeV + + + +reaction_al24(,e+)mg24->Mg-24 + + +13.885 MeV + + + +reaction_ne23(p,g)na24->Na-24 + + +10.553 MeV + + + +reaction_s31(,e+)p31->P-31 + + +5.3975 MeV + + + +reaction_mg21(,e+)na21->Na-21 + + +13.096 MeV + + + +reaction_mg27(n,g)mg28->Mg-28 + + +8.504 MeV + + + +reaction_mg25(n,g)mg26->Mg-26 + + +11.093 MeV + + + +reaction_he3(p,e+)he4->He-4 + + +19.796 MeV + + + +reaction_o18(a,g)ne22->Ne-22 + + +9.6681 MeV + + + +reaction_mg23(a,g)si27->Si-27 + + +9.33545 MeV + + + +reaction_al27(p,g)si28->Si-28 + + +11.5851 MeV + + + +reaction_o13(,e+ p)c12->C-12 + + +15.825 MeV + + + +reaction_o13(,e+ p)c12->H-1 + + +15.825 MeV + + + +reaction_be7(d,p a)he4->H-1 + + +16.766 MeV + + + +reaction_be7(d,p a)he4->He-4 + + +16.766 MeV + + + +reaction_be7(d,p a)he4->He-4 + + +16.766 MeV + + + +reaction_n16(,e- a)c12->C-12 + + +3.2581 MeV + + + +reaction_n16(,e- a)c12->He-4 + + +3.2581 MeV + + + +reaction_si25(a,p)p28->H-1 + + +6.11902 MeV + + + +reaction_si25(a,p)p28->P-28 + + +6.11902 MeV + + + +reaction_ne18(,e+)f18->F-18 + + +4.444 MeV + + + +reaction_f20(a,g)na24->Na-24 + + +10.825 MeV + + + +reaction_mg23(,e+)na23->Na-23 + + +4.0569 MeV + + + +reaction_n17(,e- n)o16->O-16 + + +4.5357 MeV + + + +reaction_n17(,e- n)o16->n-1 + + +4.5357 MeV + + + +reaction_n16(e-,)o16->O-16 + + +10.42 MeV + + + +reaction_ne17(,e+ p)o16->H-1 + + +13.948 MeV + + + +reaction_ne17(,e+ p)o16->O-16 + + +13.948 MeV + + + +reaction_be12(,e- n)b11->B-11 + + +8.3377 MeV + + + +reaction_be12(,e- n)b11->n-1 + + +8.3377 MeV + + + +reaction_c15(p,n)n15->N-15 + + +8.98866 MeV + + + +reaction_c15(p,n)n15->n-1 + + +8.98866 MeV + + + +reaction_c11(,e+)b11->B-11 + + +1.983 MeV + + + +reaction_f20(a,n)na23->Na-23 + + +3.866 MeV + + + +reaction_f20(a,n)na23->n-1 + + +3.866 MeV + + + +reaction_b13(e-,)c13->C-13 + + +13.437 MeV + + + +reaction_mg27(p,n)al27->Al-27 + + +1.828 MeV + + + +reaction_mg27(p,n)al27->n-1 + + +1.828 MeV + + + +reaction_mg27(p,g)al28->Al-28 + + +9.553 MeV + + + +reaction_o17(p,g)f18->F-18 + + +5.6065 MeV + + + +reaction_cl32(,e+ p)p31->H-1 + + +3.8165 MeV + + + +reaction_cl32(,e+ p)p31->P-31 + + +3.8165 MeV + + + +reaction_p30(n,g)p31->P-31 + + +12.3116 MeV + + + +reaction_al28(e-,)si28->Si-28 + + +4.6428 MeV + + + +reaction_n12(,e+)c12->C-12 + + +17.338 MeV + + + +reaction_n13(n,g)n14->N-14 + + +10.5544 MeV + + + +reaction_p31(n,g)p32->P-32 + + +7.936 MeV + + + +reaction_na22(,e+)ne22->Ne-22 + + +2.843 MeV + + + +reaction_f19(a,g)na23->Na-23 + + +10.467 MeV + + + +reaction_ne24(e-,)na24->Na-24 + + +2.466 MeV + + + +reaction_ne17(,e+)f17->F-17 + + +14.549 MeV + + + +reaction_ne23(a,g)mg27->Mg-27 + + +11.858 MeV + + + +reaction_t(he3,d)he4->H-2 + + +14.32 MeV + + + +reaction_t(he3,d)he4->He-4 + + +14.32 MeV + + + +reaction_si29(p,g)p30->P-30 + + +5.5945 MeV + + + +reaction_mg23(a,p)al26->Al-26 + + +1.87249 MeV + + + +reaction_mg23(a,p)al26->H-1 + + +1.87249 MeV + + + +reaction_na23(a,p)mg26->H-1 + + +1.82067 MeV + + + +reaction_na23(a,p)mg26->Mg-26 + + +1.82067 MeV + + + +reaction_mg26(p,g)al27->Al-27 + + +8.27105 MeV + + + +reaction_na25(e-,)mg25->Mg-25 + + +3.835 MeV + + + +reaction_li6(d,n)be7->Be-7 + + +3.38163 MeV + + + +reaction_li6(d,n)be7->n-1 + + +3.38163 MeV + + + +reaction_mg22(a,g)si26->Si-26 + + +9.17258 MeV + + + +reaction_b14(,e- n)c13->C-13 + + +0 MeV + + + +reaction_b14(,e- n)c13->n-1 + + +0 MeV + + + +reaction_cl31(,e+)s31->S-31 + + +11.977 MeV + + + +reaction_t(e-,)he3->He-3 + + +0.0186 MeV + + + +reaction_mg27(e-,)al27->Al-27 + + +2.61 MeV + + + +reaction_p30(,e+)si30->Si-30 + + +4.232 MeV + + + +reaction_o20(p,g)f21->F-21 + + +11.134 MeV + + + +reaction_f17(,e+)o17->O-17 + + +2.7598 MeV + + + +reaction_f21(a,n)na24->Na-24 + + +2.724 MeV + + + +reaction_f21(a,n)na24->n-1 + + +2.724 MeV + + + +reaction_p32(e-,)s32->S-32 + + +1.7115 MeV + + + +reaction_b8(n,p a)he4->H-1 + + +18.8525 MeV + + + +reaction_b8(n,p a)he4->He-4 + + +18.8525 MeV + + + +reaction_b8(n,p a)he4->He-4 + + +18.8525 MeV + + + +reaction_si30(n,g)si31->Si-31 + + +6.587 MeV + + + +reaction_si26(,e+)al26->Al-26 + + +5.07 MeV + + + +reaction_ne23(e-,)na23->Na-23 + + +4.3759 MeV + + + +reaction_s31(a,g)ar35->Ar-35 + + +6.42768 MeV + + + +reaction_na25(n,g)na26->Na-26 + + +5.616 MeV + + + +reaction_o16(a,g)ne20->Ne-20 + + +4.72985 MeV + + + +reaction_ne19(,e+)f19->F-19 + + +3.2394 MeV + + + +reaction_ne21(a,n)mg24->Mg-24 + + +2.555 MeV + + + +reaction_ne21(a,n)mg24->n-1 + + +2.555 MeV + + + +reaction_cl32(,e+ a)si28->He-4 + + +5.7329 MeV + + + +reaction_cl32(,e+ a)si28->Si-28 + + +5.7329 MeV + + + +reaction_f18(,e+)o18->O-18 + + +1.6558 MeV + + + +reaction_ne21(a,g)mg25->Mg-25 + + +9.882 MeV + + + +reaction_p28(,e+ a)mg24->He-4 + + +4.3591 MeV + + + +reaction_p28(,e+ a)mg24->Mg-24 + + +4.3591 MeV + + + +reaction_be12(e-,)b12->B-12 + + +11.708 MeV + + + +reaction_al26(p,g)si27->Si-27 + + +7.464 MeV + + + +reaction_cl34(,e+)s34->S-34 + + +5.491 MeV + + + +reaction_b12(e-,)c12->C-12 + + +13.368 MeV + + + +reaction_cl35(a,g)k39->K-39 + + +7.21839 MeV + + + +reaction_he3(he3,2p)he4->H-1 + + +12.859 MeV + + + +reaction_he3(he3,2p)he4->H-1 + + +12.859 MeV + + + +reaction_he3(he3,2p)he4->He-4 + + +12.859 MeV + + + +reaction_Si-24(,ν)e+,Al-24->Al-24 + + +10.794 MeV + + + +reaction_Si-24(e-,ν)Al-24->Al-24 + + +10.794 MeV + + + +reaction_Si-24(,ν|)e-,P-24->P-24 + + +-23.2748 MeV + + + +reaction_Si-24(e+,ν|)P-24->P-24 + + +-23.2748 MeV + + + +reaction_Mg-22(,ν)e+,Na-22->Na-22 + + +4.78141 MeV + + + +reaction_Mg-22(e-,ν)Na-22->Na-22 + + +4.78141 MeV + + + +reaction_Mg-22(,ν|)e-,Al-22->Al-22 + + +-18.6014 MeV + + + +reaction_Mg-22(e+,ν|)Al-22->Al-22 + + +-18.6014 MeV + + + +reaction_Mg-20(,ν)e+,Na-20->Na-20 + + +10.6272 MeV + + + +reaction_Mg-20(e-,ν)Na-20->Na-20 + + +10.6272 MeV + + + +reaction_Ne-18(,ν)e+,F-18->F-18 + + +4.4445 MeV + + + +reaction_Ne-18(e-,ν)F-18->F-18 + + +4.4445 MeV + + + +reaction_Ne-18(,ν|)e-,Na-18->Na-18 + + +-19.7204 MeV + + + +reaction_Ne-18(e+,ν|)Na-18->Na-18 + + +-19.7204 MeV + + + +reaction_O-12(,ν)e+,N-12->N-12 + + +14.6753 MeV + + + +reaction_O-12(e-,ν)N-12->N-12 + + +14.6753 MeV + + + +reaction_N-17(,ν)e+,C-17->C-17 + + +-13.1618 MeV + + + +reaction_N-17(e-,ν)C-17->C-17 + + +-13.1618 MeV + + + +reaction_N-17(,ν|)e-,O-17->O-17 + + +8.67884 MeV + + + +reaction_N-17(e+,ν|)O-17->O-17 + + +8.67884 MeV + + + +reaction_C-15(,ν)e+,B-15->B-15 + + +-19.0842 MeV + + + +reaction_C-15(e-,ν)B-15->B-15 + + +-19.0842 MeV + + + +reaction_C-15(,ν|)e-,N-15->N-15 + + +9.77171 MeV + + + +reaction_C-15(e+,ν|)N-15->N-15 + + +9.77171 MeV + + + +reaction_Cl-32(,ν)e+,S-32->S-32 + + +12.6808 MeV + + + +reaction_Cl-32(e-,ν)S-32->S-32 + + +12.6808 MeV + + + +reaction_Cl-32(,ν|)e-,Ar-32->Ar-32 + + +-11.1344 MeV + + + +reaction_Cl-32(e+,ν|)Ar-32->Ar-32 + + +-11.1344 MeV + + + +reaction_S-32(,ν)e+,P-32->P-32 + + +-1.71066 MeV + + + +reaction_S-32(e-,ν)P-32->P-32 + + +-1.71066 MeV + + + +reaction_S-32(,ν|)e-,Cl-32->Cl-32 + + +-12.6808 MeV + + + +reaction_S-32(e+,ν|)Cl-32->Cl-32 + + +-12.6808 MeV + + + +reaction_B-14(,ν)e+,Be-14->Be-14 + + +-16.2908 MeV + + + +reaction_B-14(e-,ν)Be-14->Be-14 + + +-16.2908 MeV + + + +reaction_B-14(,ν|)e-,C-14->C-14 + + +20.6438 MeV + + + +reaction_B-14(e+,ν|)C-14->C-14 + + +20.6438 MeV + + + +reaction_Cl-31(,ν)e+,S-31->S-31 + + +12.008 MeV + + + +reaction_Cl-31(e-,ν)S-31->S-31 + + +12.008 MeV + + + +reaction_Cl-31(,ν|)e-,Ar-31->Ar-31 + + +-18.3597 MeV + + + +reaction_Cl-31(e+,ν|)Ar-31->Ar-31 + + +-18.3597 MeV + + + +reaction_S-31(,ν)e+,P-31->P-31 + + +5.39801 MeV + + + +reaction_S-31(e-,ν)P-31->P-31 + + +5.39801 MeV + + + +reaction_S-31(,ν|)e-,Cl-31->Cl-31 + + +-12.008 MeV + + + +reaction_S-31(e+,ν|)Cl-31->Cl-31 + + +-12.008 MeV + + + +reaction_P-31(,ν)e+,Si-31->Si-31 + + +-1.49151 MeV + + + +reaction_P-31(e-,ν)Si-31->Si-31 + + +-1.49151 MeV + + + +reaction_P-31(,ν|)e-,S-31->S-31 + + +-5.39801 MeV + + + +reaction_P-31(e+,ν|)S-31->S-31 + + +-5.39801 MeV + + + +reaction_P-30(,ν)e+,Si-30->Si-30 + + +4.23211 MeV + + + +reaction_P-30(e-,ν)Si-30->Si-30 + + +4.23211 MeV + + + +reaction_P-30(,ν|)e-,S-30->S-30 + + +-6.1416 MeV + + + +reaction_P-30(e+,ν|)S-30->S-30 + + +-6.1416 MeV + + + +reaction_Si-30(,ν)e+,Al-30->Al-30 + + +-8.56885 MeV + + + +reaction_Si-30(e-,ν)Al-30->Al-30 + + +-8.56885 MeV + + + +reaction_Si-30(,ν|)e-,P-30->P-30 + + +-4.23211 MeV + + + +reaction_Si-30(e+,ν|)P-30->P-30 + + +-4.23211 MeV + + + +reaction_P-29(,ν)e+,Si-29->Si-29 + + +4.94223 MeV + + + +reaction_P-29(e-,ν)Si-29->Si-29 + + +4.94223 MeV + + + +reaction_P-29(,ν|)e-,S-29->S-29 + + +-13.8584 MeV + + + +reaction_P-29(e+,ν|)S-29->S-29 + + +-13.8584 MeV + + + +reaction_Si-29(,ν)e+,Al-29->Al-29 + + +-3.68732 MeV + + + +reaction_Si-29(e-,ν)Al-29->Al-29 + + +-3.68732 MeV + + + +reaction_Si-29(,ν|)e-,P-29->P-29 + + +-4.94223 MeV + + + +reaction_Si-29(e+,ν|)P-29->P-29 + + +-4.94223 MeV + + + +reaction_P-28(,ν)e+,Si-28->Si-28 + + +14.3449 MeV + + + +reaction_P-28(e-,ν)Si-28->Si-28 + + +14.3449 MeV + + + +reaction_P-28(,ν|)e-,S-28->S-28 + + +-11.2211 MeV + + + +reaction_P-28(e+,ν|)S-28->S-28 + + +-11.2211 MeV + + + +reaction_Si-28(,ν)e+,Al-28->Al-28 + + +-4.64208 MeV + + + +reaction_Si-28(e-,ν)Al-28->Al-28 + + +-4.64208 MeV + + + +reaction_Si-28(,ν|)e-,P-28->P-28 + + +-14.3449 MeV + + + +reaction_Si-28(e+,ν|)P-28->P-28 + + +-14.3449 MeV + + + +reaction_Al-28(,ν)e+,Mg-28->Mg-28 + + +-1.83077 MeV + + + +reaction_Al-28(e-,ν)Mg-28->Mg-28 + + +-1.83077 MeV + + + +reaction_Al-28(,ν|)e-,Si-28->Si-28 + + +4.64208 MeV + + + +reaction_Al-28(e+,ν|)Si-28->Si-28 + + +4.64208 MeV + + + +reaction_Si-27(,ν)e+,Al-27->Al-27 + + +4.81236 MeV + + + +reaction_Si-27(e-,ν)Al-27->Al-27 + + +4.81236 MeV + + + +reaction_Si-27(,ν|)e-,P-27->P-27 + + +-11.7255 MeV + + + +reaction_Si-27(e+,ν|)P-27->P-27 + + +-11.7255 MeV + + + +reaction_Al-27(,ν)e+,Mg-27->Mg-27 + + +-2.61027 MeV + + + +reaction_Al-27(e-,ν)Mg-27->Mg-27 + + +-2.61027 MeV + + + +reaction_Al-27(,ν|)e-,Si-27->Si-27 + + +-4.81236 MeV + + + +reaction_Al-27(e+,ν|)Si-27->Si-27 + + +-4.81236 MeV + + + +reaction_Mg-27(,ν)e+,Na-27->Na-27 + + +-9.0688 MeV + + + +reaction_Mg-27(e-,ν)Na-27->Na-27 + + +-9.0688 MeV + + + +reaction_Mg-27(,ν|)e-,Al-27->Al-27 + + +2.61027 MeV + + + +reaction_Mg-27(e+,ν|)Al-27->Al-27 + + +2.61027 MeV + + + +reaction_Si-26(,ν)e+,Al-26->Al-26 + + +5.06914 MeV + + + +reaction_Si-26(e-,ν)Al-26->Al-26 + + +5.06914 MeV + + + +reaction_Si-26(,ν|)e-,P-26->P-26 + + +-18.114 MeV + + + +reaction_Si-26(e+,ν|)P-26->P-26 + + +-18.114 MeV + + + +reaction_Al-26(,ν)e+,Mg-26->Mg-26 + + +4.0044 MeV + + + +reaction_Al-26(e-,ν)Mg-26->Mg-26 + + +4.0044 MeV + + + +reaction_Al-26(,ν|)e-,Si-26->Si-26 + + +-5.06914 MeV + + + +reaction_Al-26(e+,ν|)Si-26->Si-26 + + +-5.06914 MeV + + + +reaction_Mg-26(,ν)e+,Na-26->Na-26 + + +-9.35376 MeV + + + +reaction_Mg-26(e-,ν)Na-26->Na-26 + + +-9.35376 MeV + + + +reaction_Mg-26(,ν|)e-,Al-26->Al-26 + + +-4.0044 MeV + + + +reaction_Mg-26(e+,ν|)Al-26->Al-26 + + +-4.0044 MeV + + + +reaction_Si-25(,ν)e+,Al-25->Al-25 + + +12.7433 MeV + + + +reaction_Si-25(e-,ν)Al-25->Al-25 + + +12.7433 MeV + + + +reaction_Si-25(,ν|)e-,P-25->P-25 + + +-16.3628 MeV + + + +reaction_Si-25(e+,ν|)P-25->P-25 + + +-16.3628 MeV + + + +reaction_Al-25(,ν)e+,Mg-25->Mg-25 + + +4.27681 MeV + + + +reaction_Al-25(e-,ν)Mg-25->Mg-25 + + +4.27681 MeV + + + +reaction_Al-25(,ν|)e-,Si-25->Si-25 + + +-12.7433 MeV + + + +reaction_Al-25(e+,ν|)Si-25->Si-25 + + +-12.7433 MeV + + + +reaction_S-34(,ν)e+,P-34->P-34 + + +-5.38299 MeV + + + +reaction_S-34(e-,ν)P-34->P-34 + + +-5.38299 MeV + + + +reaction_S-34(,ν|)e-,Cl-34->Cl-34 + + +-5.4916 MeV + + + +reaction_S-34(e+,ν|)Cl-34->Cl-34 + + +-5.4916 MeV + + + +reaction_Al-24(,ν)e+,Mg-24->Mg-24 + + +13.8848 MeV + + + +reaction_Al-24(e-,ν)Mg-24->Mg-24 + + +13.8848 MeV + + + +reaction_Al-24(,ν|)e-,Si-24->Si-24 + + +-10.794 MeV + + + +reaction_Al-24(e+,ν|)Si-24->Si-24 + + +-10.794 MeV + + + +reaction_O-14(,ν)e+,N-14->N-14 + + +5.14436 MeV + + + +reaction_O-14(e-,ν)N-14->N-14 + + +5.14436 MeV + + + +reaction_O-14(,ν|)e-,F-14->F-14 + + +-23.9566 MeV + + + +reaction_O-14(e+,ν|)F-14->F-14 + + +-23.9566 MeV + + + +reaction_Mg-23(,ν)e+,Na-23->Na-23 + + +4.05618 MeV + + + +reaction_Mg-23(e-,ν)Na-23->Na-23 + + +4.05618 MeV + + + +reaction_Mg-23(,ν|)e-,Al-23->Al-23 + + +-12.2217 MeV + + + +reaction_Mg-23(e+,ν|)Al-23->Al-23 + + +-12.2217 MeV + + + +reaction_P-32(,ν)e+,Si-32->Si-32 + + +-0.227187 MeV + + + +reaction_P-32(e-,ν)Si-32->Si-32 + + +-0.227187 MeV + + + +reaction_P-32(,ν|)e-,S-32->S-32 + + +1.71066 MeV + + + +reaction_P-32(e+,ν|)S-32->S-32 + + +1.71066 MeV + + + +reaction_Si-31(,ν)e+,Al-31->Al-31 + + +-7.99833 MeV + + + +reaction_Si-31(e-,ν)Al-31->Al-31 + + +-7.99833 MeV + + + +reaction_Si-31(,ν|)e-,P-31->P-31 + + +1.49151 MeV + + + +reaction_Si-31(e+,ν|)P-31->P-31 + + +1.49151 MeV + + + +reaction_Mg-21(,ν)e+,Na-21->Na-21 + + +13.0887 MeV + + + +reaction_Mg-21(e-,ν)Na-21->Na-21 + + +13.0887 MeV + + + +reaction_Mg-21(,ν|)e-,Al-21->Al-21 + + +-16.1859 MeV + + + +reaction_Mg-21(e+,ν|)Al-21->Al-21 + + +-16.1859 MeV + + + +reaction_Na-21(,ν)e+,Ne-21->Ne-21 + + +3.54692 MeV + + + +reaction_Na-21(e-,ν)Ne-21->Ne-21 + + +3.54692 MeV + + + +reaction_Na-21(,ν|)e-,Mg-21->Mg-21 + + +-13.0887 MeV + + + +reaction_Na-21(e+,ν|)Mg-21->Mg-21 + + +-13.0887 MeV + + + +reaction_Cl-34(,ν)e+,S-34->S-34 + + +5.4916 MeV + + + +reaction_Cl-34(e-,ν)S-34->S-34 + + +5.4916 MeV + + + +reaction_Cl-34(,ν|)e-,Ar-34->Ar-34 + + +-6.06179 MeV + + + +reaction_Cl-34(e+,ν|)Ar-34->Ar-34 + + +-6.06179 MeV + + + +reaction_Na-20(,ν)e+,Ne-20->Ne-20 + + +13.8924 MeV + + + +reaction_Na-20(e-,ν)Ne-20->Ne-20 + + +13.8924 MeV + + + +reaction_Na-20(,ν|)e-,Mg-20->Mg-20 + + +-10.6272 MeV + + + +reaction_Na-20(e+,ν|)Mg-20->Mg-20 + + +-10.6272 MeV + + + +reaction_Ne-20(,ν)e+,F-20->F-20 + + +-7.02447 MeV + + + +reaction_Ne-20(e-,ν)F-20->F-20 + + +-7.02447 MeV + + + +reaction_Ne-20(,ν|)e-,Na-20->Na-20 + + +-13.8924 MeV + + + +reaction_Ne-20(e+,ν|)Na-20->Na-20 + + +-13.8924 MeV + + + +reaction_Ne-19(,ν)e+,F-19->F-19 + + +3.2395 MeV + + + +reaction_Ne-19(e-,ν)F-19->F-19 + + +3.2395 MeV + + + +reaction_Ne-19(,ν|)e-,Na-19->Na-19 + + +-11.1773 MeV + + + +reaction_Ne-19(e+,ν|)Na-19->Na-19 + + +-11.1773 MeV + + + +reaction_F-19(,ν)e+,O-19->O-19 + + +-4.8203 MeV + + + +reaction_F-19(e-,ν)O-19->O-19 + + +-4.8203 MeV + + + +reaction_F-19(,ν|)e-,Ne-19->Ne-19 + + +-3.2395 MeV + + + +reaction_F-19(e+,ν|)Ne-19->Ne-19 + + +-3.2395 MeV + + + +reaction_Ne-17(,ν)e+,F-17->F-17 + + +14.5488 MeV + + + +reaction_Ne-17(e-,ν)F-17->F-17 + + +14.5488 MeV + + + +reaction_Ne-17(,ν|)e-,Na-17->Na-17 + + +-18.2191 MeV + + + +reaction_Ne-17(e+,ν|)Na-17->Na-17 + + +-18.2191 MeV + + + +reaction_F-17(,ν)e+,O-17->O-17 + + +2.76047 MeV + + + +reaction_F-17(e-,ν)O-17->O-17 + + +2.76047 MeV + + + +reaction_F-17(,ν|)e-,Ne-17->Ne-17 + + +-14.5488 MeV + + + +reaction_F-17(e+,ν|)Ne-17->Ne-17 + + +-14.5488 MeV + + + +reaction_B-7(,ν)e+,Be-7->Be-7 + + +11.9076 MeV + + + +reaction_B-7(e-,ν)Be-7->Be-7 + + +11.9076 MeV + + + +reaction_F-16(,ν)e+,O-16->O-16 + + +15.4122 MeV + + + +reaction_F-16(e-,ν)O-16->O-16 + + +15.4122 MeV + + + +reaction_F-16(,ν|)e-,Ne-16->Ne-16 + + +-13.3116 MeV + + + +reaction_F-16(e+,ν|)Ne-16->Ne-16 + + +-13.3116 MeV + + + +reaction_O-16(,ν)e+,N-16->N-16 + + +-10.4209 MeV + + + +reaction_O-16(e-,ν)N-16->N-16 + + +-10.4209 MeV + + + +reaction_O-16(,ν|)e-,F-16->F-16 + + +-15.4122 MeV + + + +reaction_O-16(e+,ν|)F-16->F-16 + + +-15.4122 MeV + + + +reaction_N-16(,ν)e+,C-16->C-16 + + +-8.01023 MeV + + + +reaction_N-16(e-,ν)C-16->C-16 + + +-8.01023 MeV + + + +reaction_N-16(,ν|)e-,O-16->O-16 + + +10.4209 MeV + + + +reaction_N-16(e+,ν|)O-16->O-16 + + +10.4209 MeV + + + +reaction_F-15(,ν)e+,O-15->O-15 + + +13.7111 MeV + + + +reaction_F-15(e-,ν)O-15->O-15 + + +13.7111 MeV + + + +reaction_F-15(,ν|)e-,Ne-15->Ne-15 + + +-23.6486 MeV + + + +reaction_F-15(e+,ν|)Ne-15->Ne-15 + + +-23.6486 MeV + + + +reaction_O-15(,ν)e+,N-15->N-15 + + +2.75418 MeV + + + +reaction_O-15(e-,ν)N-15->N-15 + + +2.75418 MeV + + + +reaction_O-15(,ν|)e-,F-15->F-15 + + +-13.7111 MeV + + + +reaction_O-15(e+,ν|)F-15->F-15 + + +-13.7111 MeV + + + +reaction_N-15(,ν)e+,C-15->C-15 + + +-9.77171 MeV + + + +reaction_N-15(e-,ν)C-15->C-15 + + +-9.77171 MeV + + + +reaction_N-15(,ν|)e-,O-15->O-15 + + +-2.75418 MeV + + + +reaction_N-15(e+,ν|)O-15->O-15 + + +-2.75418 MeV + + + +reaction_N-14(,ν)e+,C-14->C-14 + + +-0.156476 MeV + + + +reaction_N-14(e-,ν)C-14->C-14 + + +-0.156476 MeV + + + +reaction_N-14(,ν|)e-,O-14->O-14 + + +-5.14436 MeV + + + +reaction_N-14(e+,ν|)O-14->O-14 + + +-5.14436 MeV + + + +reaction_C-14(,ν)e+,B-14->B-14 + + +-20.6438 MeV + + + +reaction_C-14(e-,ν)B-14->B-14 + + +-20.6438 MeV + + + +reaction_C-14(,ν|)e-,N-14->N-14 + + +0.156476 MeV + + + +reaction_C-14(e+,ν|)N-14->N-14 + + +0.156476 MeV + + + +reaction_Ne-16(,ν)e+,F-16->F-16 + + +13.3116 MeV + + + +reaction_Ne-16(e-,ν)F-16->F-16 + + +13.3116 MeV + + + +reaction_O-13(,ν)e+,N-13->N-13 + + +17.77 MeV + + + +reaction_O-13(e-,ν)N-13->N-13 + + +17.77 MeV + + + +reaction_O-13(,ν|)e-,F-13->F-13 + + +-18.9145 MeV + + + +reaction_O-13(e+,ν|)F-13->F-13 + + +-18.9145 MeV + + + +reaction_N-13(,ν)e+,C-13->C-13 + + +2.22047 MeV + + + +reaction_N-13(e-,ν)C-13->C-13 + + +2.22047 MeV + + + +reaction_N-13(,ν|)e-,O-13->O-13 + + +-17.77 MeV + + + +reaction_N-13(e+,ν|)O-13->O-13 + + +-17.77 MeV + + + +reaction_N-12(,ν)e+,C-12->C-12 + + +17.3381 MeV + + + +reaction_N-12(e-,ν)C-12->C-12 + + +17.3381 MeV + + + +reaction_N-12(,ν|)e-,O-12->O-12 + + +-14.6753 MeV + + + +reaction_N-12(e+,ν|)O-12->O-12 + + +-14.6753 MeV + + + +reaction_C-12(,ν)e+,B-12->B-12 + + +-13.3694 MeV + + + +reaction_C-12(e-,ν)B-12->B-12 + + +-13.3694 MeV + + + +reaction_C-12(,ν|)e-,N-12->N-12 + + +-17.3381 MeV + + + +reaction_C-12(e+,ν|)N-12->N-12 + + +-17.3381 MeV + + + +reaction_B-12(,ν)e+,Be-12->Be-12 + + +-11.7084 MeV + + + +reaction_B-12(e-,ν)Be-12->Be-12 + + +-11.7084 MeV + + + +reaction_B-12(,ν|)e-,C-12->C-12 + + +13.3694 MeV + + + +reaction_B-12(e+,ν|)C-12->C-12 + + +13.3694 MeV + + + +reaction_Mg-25(,ν)e+,Na-25->Na-25 + + +-3.83497 MeV + + + +reaction_Mg-25(e-,ν)Na-25->Na-25 + + +-3.83497 MeV + + + +reaction_Mg-25(,ν|)e-,Al-25->Al-25 + + +-4.27681 MeV + + + +reaction_Mg-25(e+,ν|)Al-25->Al-25 + + +-4.27681 MeV + + + +reaction_Na-25(,ν)e+,Ne-25->Ne-25 + + +-7.32231 MeV + + + +reaction_Na-25(e-,ν)Ne-25->Ne-25 + + +-7.32231 MeV + + + +reaction_Na-25(,ν|)e-,Mg-25->Mg-25 + + +3.83497 MeV + + + +reaction_Na-25(e+,ν|)Mg-25->Mg-25 + + +3.83497 MeV + + + +reaction_C-11(,ν)e+,B-11->B-11 + + +1.98169 MeV + + + +reaction_C-11(e-,ν)B-11->B-11 + + +1.98169 MeV + + + +reaction_C-11(,ν|)e-,N-11->N-11 + + +-13.7162 MeV + + + +reaction_C-11(e+,ν|)N-11->N-11 + + +-13.7162 MeV + + + +reaction_Mg-24(,ν)e+,Na-24->Na-24 + + +-5.51568 MeV + + + +reaction_Mg-24(e-,ν)Na-24->Na-24 + + +-5.51568 MeV + + + +reaction_Mg-24(,ν|)e-,Al-24->Al-24 + + +-13.8848 MeV + + + +reaction_Mg-24(e+,ν|)Al-24->Al-24 + + +-13.8848 MeV + + + +reaction_O-20(,ν)e+,N-20->N-20 + + +-17.9703 MeV + + + +reaction_O-20(e-,ν)N-20->N-20 + + +-17.9703 MeV + + + +reaction_O-20(,ν|)e-,F-20->F-20 + + +3.81363 MeV + + + +reaction_O-20(e+,ν|)F-20->F-20 + + +3.81363 MeV + + + +reaction_Na-24(,ν)e+,Ne-24->Ne-24 + + +-2.46626 MeV + + + +reaction_Na-24(e-,ν)Ne-24->Ne-24 + + +-2.46626 MeV + + + +reaction_Na-24(,ν|)e-,Mg-24->Mg-24 + + +5.51568 MeV + + + +reaction_Na-24(e+,ν|)Mg-24->Mg-24 + + +5.51568 MeV + + + +reaction_Ne-24(,ν)e+,F-24->F-24 + + +-13.4962 MeV + + + +reaction_Ne-24(e-,ν)F-24->F-24 + + +-13.4962 MeV + + + +reaction_Ne-24(,ν|)e-,Na-24->Na-24 + + +2.46626 MeV + + + +reaction_Ne-24(e+,ν|)Na-24->Na-24 + + +2.46626 MeV + + + +reaction_Na-22(,ν)e+,Ne-22->Ne-22 + + +2.84332 MeV + + + +reaction_Na-22(e-,ν)Ne-22->Ne-22 + + +2.84332 MeV + + + +reaction_Na-22(,ν|)e-,Mg-22->Mg-22 + + +-4.78141 MeV + + + +reaction_Na-22(e+,ν|)Mg-22->Mg-22 + + +-4.78141 MeV + + + +reaction_B-8(,ν)e+,Be-8->Be-8 + + +17.9799 MeV + + + +reaction_B-8(e-,ν)Be-8->Be-8 + + +17.9799 MeV + + + +reaction_B-8(,ν|)e-,C-8->C-8 + + +-12.1427 MeV + + + +reaction_B-8(e+,ν|)C-8->C-8 + + +-12.1427 MeV + + + +reaction_Ar-35(,ν)e+,Cl-35->Cl-35 + + +5.96624 MeV + + + +reaction_Ar-35(e-,ν)Cl-35->Cl-35 + + +5.96624 MeV + + + +reaction_Ar-35(,ν|)e-,K-35->K-35 + + +-11.8744 MeV + + + +reaction_Ar-35(e+,ν|)K-35->K-35 + + +-11.8744 MeV + + + +reaction_F-18(,ν)e+,O-18->O-18 + + +1.65593 MeV + + + +reaction_F-18(e-,ν)O-18->O-18 + + +1.65593 MeV + + + +reaction_F-18(,ν|)e-,Ne-18->Ne-18 + + +-4.4445 MeV + + + +reaction_F-18(e+,ν|)Ne-18->Ne-18 + + +-4.4445 MeV + + + +reaction_Ne-21(,ν)e+,F-21->F-21 + + +-5.68417 MeV + + + +reaction_Ne-21(e-,ν)F-21->F-21 + + +-5.68417 MeV + + + +reaction_Ne-21(,ν|)e-,Na-21->Na-21 + + +-3.54692 MeV + + + +reaction_Ne-21(e+,ν|)Na-21->Na-21 + + +-3.54692 MeV + + + +reaction_Cl-35(,ν)e+,S-35->S-35 + + +-0.167321 MeV + + + +reaction_Cl-35(e-,ν)S-35->S-35 + + +-0.167321 MeV + + + +reaction_Cl-35(,ν|)e-,Ar-35->Ar-35 + + +-5.96624 MeV + + + +reaction_Cl-35(e+,ν|)Ar-35->Ar-35 + + +-5.96624 MeV + + + +reaction_O-18(,ν)e+,N-18->N-18 + + +-13.896 MeV + + + +reaction_O-18(e-,ν)N-18->N-18 + + +-13.896 MeV + + + +reaction_O-18(,ν|)e-,F-18->F-18 + + +-1.65593 MeV + + + +reaction_O-18(e+,ν|)F-18->F-18 + + +-1.65593 MeV + + + +reaction_F-21(,ν)e+,O-21->O-21 + + +-8.10964 MeV + + + +reaction_F-21(e-,ν)O-21->O-21 + + +-8.10964 MeV + + + +reaction_F-21(,ν|)e-,Ne-21->Ne-21 + + +5.68417 MeV + + + +reaction_F-21(e+,ν|)Ne-21->Ne-21 + + +5.68417 MeV + + + +reaction_Be-7(,ν)e+,Li-7->Li-7 + + +0.861893 MeV + + + +reaction_Be-7(e-,ν)Li-7->Li-7 + + +0.861893 MeV + + + +reaction_Be-7(,ν|)e-,B-7->B-7 + + +-11.9076 MeV + + + +reaction_Be-7(e+,ν|)B-7->B-7 + + +-11.9076 MeV + + + +reaction_Na-23(,ν)e+,Ne-23->Ne-23 + + +-4.37581 MeV + + + +reaction_Na-23(e-,ν)Ne-23->Ne-23 + + +-4.37581 MeV + + + +reaction_Na-23(,ν|)e-,Mg-23->Mg-23 + + +-4.05618 MeV + + + +reaction_Na-23(e+,ν|)Mg-23->Mg-23 + + +-4.05618 MeV + + + +reaction_C-13(,ν)e+,B-13->B-13 + + +-13.4369 MeV + + + +reaction_C-13(e-,ν)B-13->B-13 + + +-13.4369 MeV + + + +reaction_C-13(,ν|)e-,N-13->N-13 + + +-2.22047 MeV + + + +reaction_C-13(e+,ν|)N-13->N-13 + + +-2.22047 MeV + + + +reaction_O-17(,ν)e+,N-17->N-17 + + +-8.67884 MeV + + + +reaction_O-17(e-,ν)N-17->N-17 + + +-8.67884 MeV + + + +reaction_O-17(,ν|)e-,F-17->F-17 + + +-2.76047 MeV + + + +reaction_O-17(e+,ν|)F-17->F-17 + + +-2.76047 MeV + + + +reaction_F-20(,ν)e+,O-20->O-20 + + +-3.81363 MeV + + + +reaction_F-20(e-,ν)O-20->O-20 + + +-3.81363 MeV + + + +reaction_F-20(,ν|)e-,Ne-20->Ne-20 + + +7.02447 MeV + + + +reaction_F-20(e+,ν|)Ne-20->Ne-20 + + +7.02447 MeV + + + +reaction_Ne-23(,ν)e+,F-23->F-23 + + +-8.43931 MeV + + + +reaction_Ne-23(e-,ν)F-23->F-23 + + +-8.43931 MeV + + + +reaction_Ne-23(,ν|)e-,Na-23->Na-23 + + +4.37581 MeV + + + +reaction_Ne-23(e+,ν|)Na-23->Na-23 + + +4.37581 MeV + + + +reaction_Li-6(,ν)e+,He-6->He-6 + + +-3.50521 MeV + + + +reaction_Li-6(e-,ν)He-6->He-6 + + +-3.50521 MeV + + + +reaction_Li-6(,ν|)e-,Be-6->Be-6 + + +-4.28815 MeV + + + +reaction_Li-6(e+,ν|)Be-6->Be-6 + + +-4.28815 MeV + + + diff --git a/tests/graphnet_sandbox/main.cpp b/tests/graphnet_sandbox/main.cpp index 513dd22a..939b889f 100644 --- a/tests/graphnet_sandbox/main.cpp +++ b/tests/graphnet_sandbox/main.cpp @@ -81,7 +81,7 @@ int main(int argc, char* argv[]){ g_previousHandler = std::set_terminate(quill_terminate_handler); quill::Logger* logger = fourdst::logging::LogManager::getInstance().getLogger("log"); - logger->set_log_level(quill::LogLevel::TraceL3); + logger->set_log_level(quill::LogLevel::TraceL2); LOG_INFO(logger, "Starting Adaptive Engine View Example..."); using namespace gridfire;